2014-06-06 50 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