新建项目
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_xml

把之前项目src下的内容全部复制过来
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_测试类_02

阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_测试类_03
pom.xml内复制过来
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_测试类_04
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_黑马传智播客_05

开始配置

新建一个config的包,然后再新建配置文件类SpringConfiguration
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_配置文件_06

@Configuration这个注解是可写可不写的。

这个类会做为字节码的参数传给ApplicationContext
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_测试类_07

@ComponentScan配置要扫描的包

阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_spring_08

@Import

但是这个Import要导谁呢?
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_xml_09

新建JdbcConfig类
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_黑马传智播客_10

阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_配置文件_11
这一就可以通过Import导入JdbcConfig这个类
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_黑马传智播客_12
xml里面扫描包的配置可以省略掉了。可以删除
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_测试类_13

jdbcConfig

下面这两块的内容,我们就可以配置到JdbcConfig这个类里面了
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_黑马传智播客_14
创建一个createJdbcTempalte里面需要一个dataSource类型的参数
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_黑马传智播客_15
DataSource需要导包,这个包可能需要自己手动导入
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_黑马传智播客_16

阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_xml_17
现在缺少的就是DataSource。
同时让他进容器也需要加上@Bean的注解
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_测试类_18
这四个变量我们可以在上面定义
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_测试类_19
都使用@Value注解,里面使用Spring的EL表达式
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_配置文件_20

创建配置文件jdbcConfigProperties


阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_测试类_21
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_黑马传智播客_22

@PropertySource注解


阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_配置文件_23

bean.xml内这里就可以删除了
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_黑马传智播客_24

开启注解事物的支持

阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_spring_25
这样这段就可以删除了。
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_spring_26

事物配置

阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_黑马传智播客_27
定义创建TransactionManager的方法,传入一个dataSource数据源
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_测试类_28
让它进Spring容器就加上@Bean的注解
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_配置文件_29
bean.xml内的这两行代码就可以删除掉。
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_黑马传智播客_30

删除整个bean.xml

阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_spring_31

SpringConfiguration内再导入TransactionConfig

阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_配置文件_32

修改测试类

修改前的配置
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_黑马传智播客_33
修改为注解的方式
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_spring_34
数据库默认的初始值
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_测试类_35
默认异常存在
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_测试类_36
运行我们的测试类
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_spring_37
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_配置文件_38
事务被控制住了
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_黑马传智播客_39

把异常去掉
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_测试类_40
可以正常转账成功
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_测试类_41

以上就是基于纯注解的配置

开启spring注解事务的支持
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制_黑马传智播客_42

这样基于声明事务就告一段落了。