博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自己的Spring复习
阅读量:4142 次
发布时间:2019-05-25

本文共 2315 字,大约阅读时间需要 7 分钟。

以一个转账案例来复习:

一、案例前的知识需要:aop事务,
jdbc模板连接池之类的。
1.aop事务,面向切面编程思想。

这一行代码是我们要执行的主要操作,就是增删查改的实现类层,里面有操作的方法

这一行代码是在执行相应的操作时反馈给用户的信息,类myAdvice代码在下面

配置切入点id为pc

制定通知ref为前面的id “myAdvice” ,pointcut-ref=“pc” 切入点,id为前面定义好的pc

2.jdbc模板连接池之类的。

db.properties里面的内容:

jdbc.jdbcUrl=jdbc:mysql:///mybatis  			jdbc.driverClass=com.mysql.jdbc.Driver			jdbc.user=root			jdbc.password=12345

指定spring读取db.properyies配置注入带连接池当中

1.连接池

连接池解释:bean文件里面的class是固定的,name一般起dataSource,

value里面的值采用${}的格式
Dao的相关代码

service

private AccountDao ad; private TransactionTemplate tt; @Override @Transactional(isolation=Isolation.REPEATABLE_READ,propagation=Propagation.REQUIRED,readOnly=false) public void transfer(final Integer from, final Integer to, final Double money) { ad.decrease(from, money); ad.increase(to, money); }解释: private TransactionTemplate tt;这一行开启的是Transaction事务模板,具体xml文件配置如下:
而现在我们用的是aop注解事务来处理,配置文件中需要的代码:
在当前类方法transfer的前面,我们需要加一行注解: @Transactional(isolation=Isolation.REPEATABLE_READ,propagation=Propagation.REQUIRED,readOnly=false),达到用注解配置aop事务的目的。

二、整体思路整理:在本例转账中,我们先在Dao层创建AccountDao接口,中间定义两个抽象方法:

void increase(Integer id,Double money);
void decrease(Integer id,Double money);,然后在AccountDaoImpl中,继承JdbcDaoSupport,采用jdbc模板来来实现方法,钱的增加和减少。然后在service和serviceimpl中就是实现这一功能的方法:
transfer(final Integer from, final Integer to, final Double money)

然后我们在当前src下面建立一个xml文件来完成配置,创建db.properties的文件来填写数据库的配置,用代码:<context:property-placeholder location=“classpath:db.properties” />读取文件当中数据库的配置

然后完成连接池、Dao、Service的相关配置,最后通过:tx:annotation-driven/开启使用注解管理aop事务,最后在serviceimpl实现类前面加入: @Transactional(isolation=Isolation.REPEATABLE_READ,propagation=Propagation.REQUIRED,readOnly=false)来完成注解aop事务。
最后测试代码:
@RunWith(SpringJUnit4ClassRunner.class) //Junit测试的必须注解
@ContextConfiguration(“classpath:applicationContext.xml”) //制定xml配置文件的位置
public class Demo {
@Resource(name=“accountService”) //将配置文件中service层中的accountService注入到下面的as中
private AccountService as;
@Test
public void fun1(){
as.transfer(1, 2, 100d);
}

转载地址:http://jfkti.baihongyu.com/

你可能感兴趣的文章
Palindrome Partitioning --回文切割 深搜(重重)
查看>>
对话周鸿袆:从程序员创业谈起
查看>>
Mysql中下划线问题
查看>>
Xcode 11 报错,提示libstdc++.6 缺失,解决方案
查看>>
idea的安装以及简单使用
查看>>
Windows mysql 安装
查看>>
python循环语句与C语言的区别
查看>>
vue 项目中图片选择路径位置static 或 assets区别
查看>>
vue项目打包后无法运行报错空白页面
查看>>
Vue 解决部署到服务器后或者build之后Element UI图标不显示问题(404错误)
查看>>
element-ui全局自定义主题
查看>>
facebook库runtime.js
查看>>
vue2.* 中 使用socket.io
查看>>
openlayers安装引用
查看>>
js报错显示subString/subStr is not a function
查看>>
高德地图js API实现鼠标悬浮于点标记时弹出信息窗体显示详情,点击点标记放大地图操作
查看>>
初始化VUE项目报错
查看>>
vue项目使用安装sass
查看>>
HTTP和HttpServletRequest 要点
查看>>
在osg场景中使用GLSL语言——一个例子
查看>>