AOP事务处理
事务处理底层使用AOP原理
Spring事务管理API
接口:PlatformTransactionMarager
1.DataSourceTransationManager JDBC mybatis
2.HibernateTranstionManager
具体实现:
1.创建数据源连接池
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="url" value="" />
<property name="username" value="" />
<property name="password" value="" />
<property name="driverClassName" value="" />
</bean>
2.创建事务管理器
<bean id = "transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
//注入数据源
<property name="dataSource" ref="dataSource" />
</bean>
3.开启事务注解
<tx:annotation-driven transaction-manager="transactionManager" / >
4.在service类上面或方法上面添加事务注解
@Transactional
public void UserService(){
}
@Transactional
1.可以使用在类上面,也可以使用在方法上面。 在类上面全部方法都加入事务
2.@Transactional (propagation.Propagation.REQUIRED)属性说明
1)propagation 事务传播行为
required
required_new
2)isolation 事务到隔离级别
有三个问题: 脏读, 不可重复读,虚读
mysql 默认使用REPEATABLE READ
3)timeout 超时
4)readOnly 只读
5)rollbackFor 回滚
6)noRollbackFor 不回滚
xml方式设置事务
1.配置事务管理器
2.配置通知
<tx:advice id="txadvice">
<tx:attrbutes>
指定到那些方法上面添加事务,可以用通配符 *
<tx:method name="account*" propagation=“REQUIRED”/>
</tx:attrbutes>
</tx:advice>
3.配置切入点和切面
<aop:config>
配置切入点
<aop:pointcut id="pt" expression="切入点表达式" />
配置切面
<aop:advice-ref="txadvice" pointcut-ref="pt" />
</aop:config>
完全注解开发
@Configuration //配置类
@ComponentScan(basePackages="com.duobee") //开启组件扫描
@EnableTransactionManagement //开启事务
public classTxConfig{
//创建连接池
@Bean
public DruidDataSource getDruidDataSource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName();
.......
return dataSource;
}
//创建JdbcTemplate对象
//创建事务管理对象 DataSourceTransactionManager(DataSource datasource)
}

浙公网安备 33010602011771号