Spring+jdbcTemplate配置事务处理无效
Spring+jdbcTemplate配置事务,启动不报错,但是没有效果applicationContext.xml配置数据源部分没问题,为了节约地方,不往上贴了<con...
Spring+jdbcTemplate配置事务,启动不报错,但是没有效果
applicationContext.xml
配置数据源部分没问题,为了节约地方,不往上贴了
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
::::::
</bean>
<!-- 将dataSource注入jdbcTemplate -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref ="dataSource"/>
</bean>
<!-- 将jdbcTemplate注入需要调用的dao层中 -->
<bean id="financialDao" class="dao.FinancialDao">
<property name="jdbcTemplate" ref ="jdbcTemplate"/>
</bean>
<bean id="financialService" class="service.FinancialService">
<property name="financialDao" ref="financialDao" />
</bean>
<bean id="financialAction" class="action.FinancialAction">
<property name="financialService" ref="financialService" />
</bean>
<!-- 配置JDBC事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!--配置事务模板 -->
<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager" ref="transactionManager" />
</bean>
<bean id="transactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="transactionManager"/>
<property name="target" ref="financialService"/>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
</beans>
实在是没有分了,大神们见谅啊!!
我想在service层中实现事务控制,所以<property name="target" ref="financialService"/>
在对应的financialService的某一个方法中有两个插入,第一次可以成功,第二次不会成功,
如果配置事务成功的话,那么应该数据库中一条数据没有,但是现在第一次的插入没有回滚,保存到了数据库中,是我少配置了什么东西么??
我尝试了一下<property name="target" ref="financialDao"/>
在dao层中进行事务管理,在dao同一个方法中2次插入,一次成功一次失败,同样没有事务的效果,
数据没有被回滚 展开
applicationContext.xml
配置数据源部分没问题,为了节约地方,不往上贴了
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
::::::
</bean>
<!-- 将dataSource注入jdbcTemplate -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref ="dataSource"/>
</bean>
<!-- 将jdbcTemplate注入需要调用的dao层中 -->
<bean id="financialDao" class="dao.FinancialDao">
<property name="jdbcTemplate" ref ="jdbcTemplate"/>
</bean>
<bean id="financialService" class="service.FinancialService">
<property name="financialDao" ref="financialDao" />
</bean>
<bean id="financialAction" class="action.FinancialAction">
<property name="financialService" ref="financialService" />
</bean>
<!-- 配置JDBC事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!--配置事务模板 -->
<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager" ref="transactionManager" />
</bean>
<bean id="transactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="transactionManager"/>
<property name="target" ref="financialService"/>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
</beans>
实在是没有分了,大神们见谅啊!!
我想在service层中实现事务控制,所以<property name="target" ref="financialService"/>
在对应的financialService的某一个方法中有两个插入,第一次可以成功,第二次不会成功,
如果配置事务成功的话,那么应该数据库中一条数据没有,但是现在第一次的插入没有回滚,保存到了数据库中,是我少配置了什么东西么??
我尝试了一下<property name="target" ref="financialDao"/>
在dao层中进行事务管理,在dao同一个方法中2次插入,一次成功一次失败,同样没有事务的效果,
数据没有被回滚 展开
展开全部
貌似不是这么配置的吧。
<bean id="mysqlTransactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="alter*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
<prop key="do*">PROPAGATION_REQUIRED</prop>
<prop key="execute*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice" ref="mysqlTransactionInterceptor"/>
<property name="patterns">
<list>
<value>org\.framework\.xxx\..*</value>
</list>
</property>
</bean>
追问
我还真没用过这样的配置方式。。。
这个也是声明式的事务管理么?
::::::
这一部分是什么意思?
追答
配置切面。通过正则表达式匹配目标class。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询