Day05
一、课程回顾
1.注解中的参数名,只有当参数名是value 并且只有一个参数的时候才可以省略不写
- 代理模式和装饰者模式的区别:
代理模式中用到的目标对象时在代理里面自己创建出来的,而装饰者模式的目标对象是在客户端创建装饰者对象的时候通过构造方法传递进来的
二、整合JDBC
1.导入jar包 共四个
- 在配置文件中配置 数据源
Xml中的数据源配置信息
代码中创建数据源、connection和statement
通过properties文件获取数据库连接信息
三JDBC模板类
- 在xml中进行配置模板类 让Spring帮助创建对象
- 创建UserRowMapper类 用来做结果集的封装
补充说明:通过反射实现结果集封装,开发效率高,但是执行效率低,手动封装结果集开发效率低,但是执行效率高,不过以后工作使用框架封装结果集更多
代码中如何使用:
如何通过jdbc模板查询单个对象
- 使用JDBC模板进行数据库操作时,除了查询时query,剩下的增删改都是update
- Junit@Before注解
在执行@Test注解所修饰的方式时会提前执行@Before所修饰的方法
查询单个对象
插入数据
删除数据
修改数据
四、声明式事务处理
1.添加约束和导入约束文件
添加约束
导入约束文件
配置事务管理器的bean
此处id如果设置为transactionManager的话可以省略
配置切面的通知
事务的传播策略:当出现事务嵌套问的时候 需要通过传播策略决定如果控制事务
基本上使用默认的Propagation.REQUIRED足以应对所有场景,REQUIRED指如果原来调用的地方有事务,则此方法支持事务,如果原来没有事务,则会创建一个事务
ServiceA{
AMethod(){
ServiceB.BMethod();
}
}
ServiceB{
BMethod(){
ServiceC.Cmethod();
}
}
ServiceC{
CMethod(){
}
}
配置Aop
五、声明式事务处理:注解形式
代码
六、声明式事务的异常回滚策略
1.在Spring的声明式事务中默认回滚策略: Spring只回滚运行时异常,不回滚编译时异常
2.修改回滚策略
七、多表操作问题
记住:千万不能在Servlet(Controller)层 进行业务逻辑的操作,要写到Service层中 才能解决多表操作的事务问题
八、缓存练习
1.创建切面类
2.创建环绕通知方法
3.创建自定义的注解
4.在希望缓存的业务方法上添加注解
5.在通知中写缓存的逻辑
属性注解 :Autowired Qulifier Resource Value
类注解:Component Controller service Repository Lazy Scope
方法注解:PostConstruct PreDestory