2014-10-05 60 views
1

我目前有一個名爲「AspectLogger」的類,用於記錄發生在spring @ Controller中的異常。我使用AspectJ語法使用原生Spring AOP。使用方面記錄缺少REST方法

@Before("(restController() || controller()) && publicMethod()") 
public void logBefore(final JoinPoint joinPoint) throws IOException { 
    ... 

當從前端請求的控制器方法並沒有@RequestMapping,它能夠處理它,我想也記錄此情況。

使用註釋,我該如何做到這一點?我想我需要在一個本地Spring類中創建一個方面來處理這個問題。

回答

0

據我所知,大多數Spring方法(爲了這個目的你需要用AspectJ攔截)是受保護的或私有的,而AspectJ僅用於公共方法。其他解決方法是在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping級別上使用TRACE日誌級別。既然你只是想登錄,我想讓你知道這個選項。

+0

在logBefore()方法中,我實際上是發送一封電子郵件來支持這麼簡單的TRACE日誌記錄將不會在我的情況下。據我瞭解,在一個方面包裝私有或受保護的方法是沒有問題的,因爲無論如何它們都是通過反射訪問的。 – jax 2014-10-06 00:20:57

+0

根據文檔,它只攔截公共方法 - 參考:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html#aop-pointcuts-designators – 2014-10-06 01:30:21

+0

是的,你是對。 – jax 2014-10-06 01:39:15