spring事物回滚 假如我有个action方法中的操作是有多个service对多个表进行crud,前面的操作成功,后面报异常后能回滚吗?应该怎么作呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的这个需要把这些操作都放到service层的一个方法里边(你的事务处理层),那样才能回滚。 事务配置的时候,管理的方法是action的吗?如果是就可以 我的app事务配置<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <!-- 事务拦截器bean需要依赖注入一个事务管理器 --> <property name="transactionManager"> <ref local="transactionManager"/> </property> <property name="transactionAttributes"> <!-- 下面定义事务传播属性--> <props> <prop key="insert*">PROPAGATION_REQUIRED</prop> <prop key="update*">PROPAGATION_REQUIRED</prop> <prop key="save*">PROPAGATION_REQUIRED</prop> <prop key="add*">PROPAGATION_REQUIRED</prop> <prop key="update*">PROPAGATION_REQUIRED</prop> <prop key="remove*">PROPAGATION_REQUIRED</prop> <prop key="delete*">PROPAGATION_REQUIRED</prop> <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="load*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="change*">PROPAGATION_REQUIRED</prop> <prop key="*">PROPAGATION_REQUIRED,readOnly</prop> </props> </property> </bean> <!-- 定义自动代理BeanNameAutoProxyCreator --> <bean id="beanNameAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <!-- 指定对满足哪些bean name的bean自动生成业务代理 --> <property name="beanNames"> <list> <value>*Service</value> </list> </property> <!-- 下面定义BeanNameAutoProxyCreator所需的事务拦截器--> <property name="interceptorNames"> <list> <!-- 此处可增加其他新的Interceptor --> <value>transactionInterceptor</value> </list> </property> </bean> <!-- 指定对满足哪些bean name的bean自动生成业务代理 --> <property name="beanNames"> <list> <value>*Service </value> </list> </property> 那你的action都是定义为以Service 结尾的吗?并且需要管理的方法名称存在匹配这些吗? <prop key="insert*">PROPAGATION_REQUIRED </prop> <prop key="update*">PROPAGATION_REQUIRED </prop> <prop key="save*">PROPAGATION_REQUIRED </prop> <prop key="add*">PROPAGATION_REQUIRED </prop> <prop key="update*">PROPAGATION_REQUIRED </prop> <prop key="remove*">PROPAGATION_REQUIRED </prop> <prop key="delete*">PROPAGATION_REQUIRED </prop> <prop key="get*">PROPAGATION_REQUIRED,readOnly </prop> <prop key="find*">PROPAGATION_REQUIRED,readOnly </prop> <prop key="load*">PROPAGATION_REQUIRED,readOnly </prop> <prop key="change*">PROPAGATION_REQUIRED </prop> <prop key="*">PROPAGATION_REQUIRED,readOnly </prop> 这是service层,一般事务开始不都在这里么? 矛盾,既然拟配置的事物是管理service的方法,那怎么保证你的多个service的事物完整性,拟这样的配置仅能保证在一个service中某个方法中的多个数据块操作事物的完整性,如果需要多个service的方法完整,拟只有写一个service的方法来调用这些service的方法啦 如果需要多个service的方法完整,拟只有写一个service的方法来调用这些service的方法啦?写错啦只有写一个service的方法来调用这些service的方法所调用的dao层的方法。 windows历史记录功能在java程序中如何实现 hibernate中如何取得一个vo的主键字段 java socket的问题 Axis2 开发(服务器端) 请教struts下的分页代码?? 数据库中有一自动编号的主键,EJB中如何处理? 找INTERNET开发界的朋友(华东) j2ee开发实在是麻烦! jdbc如何知道是否安装上? 兄弟我在搞EJB和JAVA数据库编程,在看<EJB>,希共同探讨 单实例模式的问题 为什么不能正常跳转。。帮我解决问题的人。。2010年发大财!!!
我的app事务配置
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<!-- 事务拦截器bean需要依赖注入一个事务管理器 -->
<property name="transactionManager">
<ref local="transactionManager"/>
</property>
<property name="transactionAttributes">
<!-- 下面定义事务传播属性-->
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="change*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<!-- 定义自动代理BeanNameAutoProxyCreator -->
<bean id="beanNameAutoProxyCreator"
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<!-- 指定对满足哪些bean name的bean自动生成业务代理 -->
<property name="beanNames">
<list>
<value>*Service</value>
</list>
</property>
<!-- 下面定义BeanNameAutoProxyCreator所需的事务拦截器-->
<property name="interceptorNames">
<list>
<!-- 此处可增加其他新的Interceptor -->
<value>transactionInterceptor</value>
</list>
</property>
</bean>
<property name="beanNames">
<list>
<value>*Service </value>
</list>
</property> 那你的action都是定义为以Service 结尾的吗?
并且需要管理的方法名称存在匹配这些吗? <prop key="insert*">PROPAGATION_REQUIRED </prop>
<prop key="update*">PROPAGATION_REQUIRED </prop>
<prop key="save*">PROPAGATION_REQUIRED </prop>
<prop key="add*">PROPAGATION_REQUIRED </prop>
<prop key="update*">PROPAGATION_REQUIRED </prop>
<prop key="remove*">PROPAGATION_REQUIRED </prop>
<prop key="delete*">PROPAGATION_REQUIRED </prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly </prop>
<prop key="find*">PROPAGATION_REQUIRED,readOnly </prop>
<prop key="load*">PROPAGATION_REQUIRED,readOnly </prop>
<prop key="change*">PROPAGATION_REQUIRED </prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly </prop>
这是service层,一般事务开始不都在这里么?
只有写一个service的方法来调用这些service的方法所调用的dao层的方法。