java - 回滚事务功能是否仅在抛出异常时才起作用?

标签 java spring annotations struts

我的类(class)声明上方有此声明。 spring只会在抛出DAOException时回滚吗?

@Transactional(rollbackFor = { ManagerException.class, DAOException.class }) 

如果是这种情况,我怎样才能回滚错误的提交而不引发异常。目前我的数据库包函数返回错误消息,我想回滚并仍然向用户显示错误消息,而不抛出异常并使应用程序崩溃。

最佳答案

The documentation说:

You can also indicate a required rollback programmatically. Although very simple, this process is quite invasive, and tightly couples your code to the Spring Framework's transaction infrastructure:

public void resolvePosition() {
    try {
        // some business logic...
    } catch (NoProductInStockException ex) {
        // trigger rollback programmatically
        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
    }
}

关于java - 回滚事务功能是否仅在抛出异常时才起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19540480/

相关文章:

java - 无法理解 Spring Boot 如何使用 maven 管理集成测试。它是否使用故障安全插件?

java - 为什么在 Annotation 接口(interface)中声明 Object 的非最终公共(public)方法?

java - 注释是 Java 中的某种 DSL 吗?

java - 如何使 JFrame 暂停线程类似于 JOptionPane 的工作方式

java - 使用 com.cybozu.labs.langdetect 包检测字符串的语言

java - 重构现有模式

spring - 如何使用Spring Boot JMS收听主题

Java 如何使用 JAXB 注释在 XML 中添加子元素

java - AES 256 位加密 - java.security.InvalidAlgorithmParameterException : Wrong IV length: must be 16 bytes long

java - 如何使用 postman 测试获得代码覆盖率