2014-06-06 49 views
0

Bonjour, 我正在构建一个基于Spring框架版本3.1.2的web应用程序。 这个应用程序会抛出许多异常(例如:网络问题,字段大小等)。当春天的webapp发出异常时发送通知邮件

演变我必须工作在是这样的:

对于每抛出异常,系统应该发送通知邮件,我听说过SimpleMappingExceptionResolver但显然它仅用于春2.x版(请参阅http://www.mkyong.com/spring-mvc/spring-mvc-exception-handling-example/) 对于在URL上方显示的解决方案,开发人员提到了用于Spring 3.X的@ExceptionHandler,但我在系统中有数百个方法,我更喜欢(如果存在)全局解决方案,所以我会不必在每个方法声明中提及ExceptionHandler注释。

有没有人有关于如何实现这一点的想法?

+1

假设你有一个日志框架([log4j的(http://logging.apache.org它使用@AfterThrowing 注解来声明/log4j/1.2/apidocs/org/apache/log4j/net/SMTPAppender.html)或[logback](http://amitstechblog.wordpress.com/2011/11/02/email-alerts-with-logback/))这可以很容易地在那里配置。无需在您的应用程序中做任何事情。此外,我相信将它作为逻辑应用于您的应用程序是一种错误的方法。监控和信号不应该是应用程序的一部分,而应该是基于日志或应用程序指标的独立部分。 –

+0

有没有什么能阻止你在Spring 3环境中使用'SimpleMappingExceptionResolver'。注释是一个选项,但这并不意味着它们需要使用! –

回答

0

这可以帮助:

后抛出的建议时 匹配方法执行退出抛出异常运行。

import org.aspectj.lang.annotation.Aspect; 
import org.aspectj.lang.annotation.AfterThrowing; 

@Aspect 
public class AfterThrowingExample { 

    @AfterThrowing("com.xyz.myapp.SystemArchitecture.dataAccessOperation()") 
    public void doRecoveryActions() { 
    // ... 
    } 

} 

更多在:

http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/aop.html

+0

谢谢你的帮助,我会试试这个; – Haroun