0

我正在嘗試使用spring AOP爲我的應用程序實現日誌記錄和異常框架。我爲ApplicationContext中的類定義了bean,並使用攔截器記錄了入口,出口和異常(如果有的話)。使用spring AOP在包級別進行日誌記錄AOP

我的查詢是:我需要爲我的ApplicationContext中的每個類創建bean還是可以在包級別上概括它。如果我的包中有30個類,我應該在我的AppContext中創建30個bean,而如果可能的話,我寧願在包級別創建它。請在這方面幫助我。

回答

0

您需要使用@Around意見。這裏定義切入點,使得包的每個類和方法都被覆蓋/攔截。請參閱下面示例 -

@Aspect 
public class AllMethodLogging { 

@Around(execution("* com.x.y..*.*(..)")) 
public Object intercept(ProceddingJoinPoint pjp){ 

    String name = pjp.getSignature().getName(); 
    try { 
     logger.info("started " + name); 
     Object obj = pjp.proceed(); 
     logger.info("finished " + name + " successfully"); 
     return obj; 
    } catch (Throwable t) { 
     logger.error(name + " finished with Exception - " + t.getMessage()); 
     throw t; 
    } finally { 
     // do some more logging if required else skip 
    }  
} 
} 

切入點execution("* com.x.y..*.*(..)")意味着com.x.y包中的任何方法,它的子包,所有的知名度應該由這個建議被截獲。

請參閱文檔here以獲取更多示例來根據您的需要定製您的切入點。

+1

即使我不同意但不得不遵循,我沒有使用aspectj的一些愚蠢的理由。 – Atom

+0

多數民衆贊成在不好:(希望我可以幫你在這裏...祝你好運! –