gpt4 book ai didi

java - @Transactional 处理 Spring 中的任何异常

转载 作者:行者123 更新时间:2023-12-01 10:52:08 25 4
gpt4 key购买 nike

我正在寻找在其中一种服务方法上使用@Transactional。但是,当发生异常时,事务不会回滚。我尝试使用 @Transactional(rollbackFor=Exception.class) 进行相同的操作。我的代码如下:-

    @Override
@Transactional(rollbackFor=Throwable.class)
public boolean addUser(User user) throws Exception{
boolean userAdded = userDao.addUser(user);
boolean userRegistrationRecorded = userDao.recordUserRegistraionDetails(user);
return true;
}

我读了很多帖子,每个人都说 Spring 仅处理 RuntimeException,而不检查除 RmiException 之外的 Exception。我需要一个适用于任何类型异常的解决方案。有人建议我编写自己的注释,而其他人建议将 TransactionManager 作为 applicationContext.xml 文件的一部分。详细的解决方案肯定会对我有帮助。

顺便说一句,我正在使用 Spring JdbcTemplate。我观察到的奇怪的事情是,尽管 Spring 引发的异常是 RuntimeException,但事务并未回滚。我试图通过在上述场景中添加相同的 User 来引发 Exception

我的applicationContext.xml如下:-

<context:component-scan base-package="org.chaperone.services.security.*" />

<context:annotation-config />

<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>

<bean id="propertyPlaceholderConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="searchSystemEnvironment" value="true" />
</bean>

<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="${DATABASE_URL}" />
<property name="username" value="${DATABASE_USER_NAME}" />
<property name="password" value="${DATABASE_PASSWORD}" />
</bean>

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>

最佳答案

使用 @Transactional 带来的易用性注释在这个 link 中得到了最好的说明。

您必须添加:

<tx:annotation-driven transaction-manager="transactionManager" />

关于java - @Transactional 处理 Spring 中的任何异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33807089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com