spring 的AOP事务,设置了跟没有一样,不成功,不知道为什么

spring-config.xml中与事务相关的代码:<beanid="transactionManager"class="org.springframework.jdb... spring-config.xml 中与事务相关的代码:
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut expression="execution(* common.Dao.*(..))"
id="allBoMethod" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="allBoMethod" />
</aop:config>
按理说这些代码加进去后,Dao里面的所有方法都受到了事务的管理,
public void addUser(UserInfo userInfo){
this.getHibernateTemplate().save(userInfo);//1
userInfo.setPassword(null);//2
this.getHibernateTemplate().save(userInfo);//3
}
上面是我dao里面的一个方法,在这个方法里面,1成功了,3失败了,有异常抛出来,但是最终却仍插进一条数据。。XML的解析并没有出现问题啊!怎么事务会不起作用呢
展开
 我来答
yushan125
2010-08-21 · 超过11用户采纳过TA的回答
知道答主
回答量:28
采纳率:0%
帮助的人:18.5万
展开全部
我先说明下;楼主说的dao里面所有方法都受到事务管理是错误的;你的 <tx:method name="add*" propagation="REQUIRED" />
只设置了add打头的方法,所以只有add开头的方法才受到事务管理;还有我建议
这句<aop:pointcut expression="execution(* common.Dao.*(..))"改成<aop:pointcut expression="execution(* common.Dao.*.*(..))";

要不然把DataSourceTransactionManager事务管理器改成这个;hibernateTransactionManager看看这个可以不
fylsh
2010-08-21 · TA获得超过950个赞
知道小有建树答主
回答量:1472
采纳率:0%
帮助的人:1037万
展开全部
调用dao的方法时的Dao对象是Spring对象池中的对象吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式