java - Spring Transactional DAO,异常被吞掉

标签 java spring aop dao

我使用 Hibernate 作为 ORM,并且我的 DAO 使用 @Repository 进行注释。

我已经通过这种方式配置了 AOP 建议。

<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="save*" propagation="REQUIRED" />
        <tx:method name="edit*" propagation="REQUIRED" />
        <tx:method name="*" read-only="true" />
    </tx:attributes>
</tx:advice>

它们工作得很好,只是如果这些方法中发生任何 sql 异常,它们不会被捕获,因此不会被打印!我猜测是因为事务在执行该方法后提交,但我不确定。

我该如何处理?

最佳答案

看看this similar post 。它建议扩展 SimpleMappingExceptionResolver

public class LoggingExceptionResolver extends SimpleMappingExceptionResolver {
private Logger logger = LoggerFactory.getLogger(LoggingExceptionResolver.class);

@Override
protected void logException(Exception ex, HttpServletRequest request) {
    this.logger.warn(buildLogMessage(ex, request), ex);
}

关于java - Spring Transactional DAO,异常被吞掉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11122031/

相关文章:

java - 如何从 JAR 文件执行脚本?

java - 无法从输入流中获取音频输入流

java - 类型不匹配 : cannot convert from Connection to Connection

java - 决定在运行时加载哪个 JavaConfig 类

java - JDBC模板查询和spring

c# - 使用 Microsoft Enterprise Library Unity 拦截方法时未返回完整堆栈跟踪

java 电子邮件验证 commons-validator EmailValidation

java - 如何在spring中设置sessionAttributes并在不同的jsps和 Controller 中访问它们

java - 错误无法注册 'com.temp.request.util.aspect.TraceLogger',因为使用该名称找到的类型不是方面

java - 使用aspectJ根据调用方法的参数修改方法的返回类型