第1步:业务的层的哪些方法需要事务(黑客)。 UserInfoServiceImpl1.zz(int from ,int to ,int money);
@Override public void zz(int from, int to, int money) { transactionTemplate.execute(new TransactionCallbackWithoutResult() { protected void doInTransactionWithoutResult(TransactionStatus status) { try { //转账的操作 zzOptional(from, to, money); System.out.println("转账成功"); } catch (Exception ex) { System.out.println("转账失败,进行回滚"); status.setRollbackOnly(); } } }); }第2步:xml中配置事务管理器 (不同的orm框架 事务管理的方式不同) (orm框架:mybatis,hibernate,jpa,jdbcTemplate…)
<bean id="txTransaction" class="org.springframework.jdbc.datasource.DataSourceTransactionManager "> <property name="dataSource" ref="dataSource"/> </bean>第3步:xml配置中定义切面
<!-- 1.切面 --> <tx:advice id="ndAdvice" transaction-manager="txTransaction"> <tx:attributes> <!-- 哪个方法需要使用什么事务:哪个屁眼需要插入黑板刷 zz*:所有以zz开始的方法名的所有方法 *zz: 所有以zz结束的方法名的所有方法 --> <tx:method name="zz*" /> <!-- * 其他方法使用默认事务 事务是只读的,就表名事务内不能对数据进行更新。--> <tx:method name="*" read-only="true"/> </tx:attributes> </tx:advice>第4步:xml配置根据切点+增强 ,自动生成业务方法的代理对象
