我在对spring事务做练习的时候,spring在事务执行过程中,如果发生异常,
已经成功执行的数据要进行回滚,有一个问题就是我在applicationContext.xm
l中已经配置了相关代码,但是结果在测试的时候,发现结果还是没有回滚,插入
了数据表中。。求解答
```
<!-- 初始化连接池大小 -->
<!-- 配置JdbcTempalte -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg index="0" ref="dataSource"></constructor-arg>
</bean>
<!-- 配置UserDao -->
<bean id="userDao" class="cn.yangxu.xml_anno.UserDao">
<property name="temlate" ref="jdbcTemplate"></property>
</bean>
<bean id="userService" class="cn.yangxu.xml_anno.UserService">
<property name="userDao" ref="userDao"></property>
</bean>
<!-- #############5. Spring声明式事务管理配置############### -->
<!-- 5.1 配置事务管理器类 -->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 5.2 配置事务增强(如果管理事务?) -->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="get*" read-only="true"/>
<tx:method name="find*" read-only="true"/>
<tx:method name="*" read-only="false"/>
</tx:attributes>
</tx:advice>
<!-- 5.3 Aop配置: 拦截哪些方法(切入点表表达式) + 应用上面的事务增强配置 -->
<aop:config>
<aop:pointcut expression="execution(* cn.yangxu.xml_anno.UserDao.*())" id="pt"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="pt"/>
</aop:config>
下面是拦截的类-->UserDao.save(User user)
public void save(User user) {
String sql = "insert into tuser (name) values(?)";
System.out.println("UserDao.save()");
Object [] args = {user.getName()};
template.update(sql, args);
int i = 1/0;//发生异常,执行成功需要回滚
}