ssm 商城实战项目:事务的配置 步骤

事务的配置步骤:
配置前:检查aop 的依赖包有没有引入:
注意事项:
1、aop 相关包
2、下面这个包
<!-- 静态代理,spring aop只是借用了此包的定义切面的方式 --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.9.1</version> </dependency>
第一步:在spring.xml 中配置事务管理器:
注意事项:
1、dataSource :是数据源的名称,一般使用什么数据库链接池,就使用什么数据源 dateSource 引用的数据源
2、bean 的id 必须是transactionManage
<!-- 第一步:配置事务管理器。 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean>
第二步:配置事务拦截器
注意事项:
1、配置通知,也就是切入代码的配置,id="txAdvice" 就是配置的切入代码的位置(详情看第三步)
2、配置事务管理器:transaction-manager="transactionManager",就是配置对应的事务管理器(详情看第一步)
<!-- 第二步:配置通知(切入代码)。事务拦截表达式,统一由xml文件配置,所以去掉了事务的注解支持配置 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <!-- propagation配置spring事务传播方式 --> <!-- 写操作 --> <tx:method name="delete*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" /> <tx:method name="update*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" /> <tx:method name="save*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" /> <!-- 读操作 --> <tx:method name="find*" propagation="SUPPORTS" /> </tx:attributes> </tx:advice>
第三步:配置切点:
注意事项:
1、切点的位置:(* com.situ.service.impl.*.*(..))
其中含义:
* 任意返回值
com.situ.service.impl 包下的
.*所有类
.*下面的所有方法
(..)任意参数
2、id="pc",谁引用此出的切点,就调用此id就可以了
3、第二行、第三行 定义通知,都是说明拦截的事务,第二行是自行定义的,位置在最后一行,第三行是调用的第二步的id="txAdvice"
<!-- aop定义 --> <aop:config> <!-- 定义切入点,切点 --> <aop:pointcut expression="execution(* com.situ.service.impl.*.*(..))" id="pc" /> <!-- 定义通知,即切入的代码,需要程序自行实现 --> <aop:advisor advice-ref="totalTimeAdvice" pointcut-ref="pc" /> <!-- 定义事务通知 --> <aop:advisor advice-ref="txAdvice" pointcut-ref="pc" /> </aop:config> <!-- 定义一个通知 --> <bean id="totalTimeAdvice" class="com.situ.aop.TotalTimeAdivce" />
作者为:刘广法,网站地址:https://liuguangfa.com/