我正在使用Hibernate作为ORM,并且我使用@Repository
注释了我的DAO。
我已经以这种方式配置了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异常,它们就不会被捕获,因此不会被打印!我猜是因为执行方法后事务提交但我不确定。
我该如何处理?
答案 0 :(得分:1)
看看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);
}