spring怎样在service层控制事务
2016-07-08
展开全部
你可以抛出一个自定义的运行时异常 class RollbackRuntimeException extends RuntimeException{} , 在调用这个方法的时候,这样写: try{ service.createOrder(); }catch(RollbackRuntimeException e) { //正常流程,什么也不做 } 或者不要使用申明式事务,使用编程式事务,手动控制事务边界.
<!–声明事务–> < bean id=”txManager”> < property name=”sessionFactory” ref=”sessionFactory” /> < /bean> < !– 创建通知–> < tx:advice id=”txAdvice” transaction-manager=”txManager”> < tx:attributes> < tx:method name=”find*” read-only=”true”/> < tx:method name=”has*” read-only=”true”/> < tx:method name=”add*” propagation=”REQUIRED” /> < tx:method name=”alter*” propagation=”REQUIRED” /> < tx:method name=”upd*” propagation=”REQUIRED” /> < tx:method name=”del*” propagation=”REQUIRED” /> < tx:method name=”exec*” propagation=”REQUIRED” /> < /tx:attributes> < /tx:advice> < !– 切入接口所在的包 –> < aop:config> < aop:pointcut id=”serviceOperation” expression=”execution(public * org.bgi.*.service.*.*(..))” /> < aop:advisor advice-ref=”txAdvice” pointcut-ref=”serviceOperation” /> < /aop:config>
<!–声明事务–> < bean id=”txManager”> < property name=”sessionFactory” ref=”sessionFactory” /> < /bean> < !– 创建通知–> < tx:advice id=”txAdvice” transaction-manager=”txManager”> < tx:attributes> < tx:method name=”find*” read-only=”true”/> < tx:method name=”has*” read-only=”true”/> < tx:method name=”add*” propagation=”REQUIRED” /> < tx:method name=”alter*” propagation=”REQUIRED” /> < tx:method name=”upd*” propagation=”REQUIRED” /> < tx:method name=”del*” propagation=”REQUIRED” /> < tx:method name=”exec*” propagation=”REQUIRED” /> < /tx:attributes> < /tx:advice> < !– 切入接口所在的包 –> < aop:config> < aop:pointcut id=”serviceOperation” expression=”execution(public * org.bgi.*.service.*.*(..))” /> < aop:advisor advice-ref=”txAdvice” pointcut-ref=”serviceOperation” /> < /aop:config>
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询