Spring——19 声明式事务

1.编程式事务

概念:由程序员编程事务控制代码
举例:OpenSessionInView

2.声明式事务

  1. 概念:
    事务控制代码已经由 spring 写好,程序员只需要声明出哪些方法需要进行事务控制和如何进行事务控制
  2. 声明式事务都是针对于 ServiceImpl 类下方法的
  3. 事务管理器基于通知(advice)的
  4. 在 spring 配置文件中配置声明式事务
    事务管理器
    声明哪些方法需要事务管理
    基于通知写的需要切点配置
<!-- 基于属性文件配置需要加这句话 --> 
<context:property-placeholder location="classpath:db.properties,classpath:second.pr operties"/> 
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverMa nagerDataSource"> 
<property name="driverClassName" value="${jdbc.driver}"></property> 
<property name="url" value="${jdbc.url}"></property> 
<property name="username" value="${jdbc.username}"></property> 
<property name="password" value="${jdbc.password}"></property> 
</bean>
<!-- spring-jdbc.jar 中 --> 
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSour ceTransactionManager"> 
<!-- 事务管理器要连接数据源才可以生效 --> 
<property name="dataSource" ref="dataSource"></property> 
</bean>
<!-- 配置声明式事务 --> 
<tx:advice id="txAdvice" transaction-manager="txManager"> 
	<tx:attributes>
	<!-- 哪些方法需要有事务控制 --> 
	<!-- 方法以 ins 开头事务管理 --> 
	<tx:method name="ins*" /> 
	<tx:method name="del*" /> 
	<tx:method name="upd*" /> 
	<tx:method name="*" /> 
	</tx:attributes> 
</tx:advice>

<!--配置切点--> 
<aop:config>
<!-- 切点范围设置大一些 --> 
<aop:pointcut expression="execution(* com.youdian.service.impl.*.*(..))" id="mypoint" /> 
<aop:advisor advice-ref="txAdvice" pointcut-ref="mypoint" /> 
</aop:config>
发布了167 篇原创文章 · 获赞 15 · 访问量 6184

猜你喜欢

转载自blog.csdn.net/Re_view/article/details/100079573