1
我有一個類有一些方法,我想在每個方法之前和之後添加方法名稱的日誌。Java-如何在每個方法調用之前和之後自動調用方法
private void log(String msg){
logger.info("=================================");
logger.info(msg);
logger.info("=================================");
}
private void method1(){
log("Here I want to print method name" + " :start");
//do stuff
log("Here I want to print method name" + " :end");
}
private void method2(){
log("Here I want to print method name" + " :start");
//do stuff
log("Here I want to print method name" + " :end");
}
理想情況下,我希望每個方法都能自動記錄前後,而不必每次都爲每個方法調用日誌。
有沒有辦法做到這一點?我知道註釋可能是一種選擇,但我不認爲我是第一個遇到這個問題的人。
您可以查看[面向方面的編程](https://en.wikipedia.org/wiki/Aspect-oriented_programming)。回到大學之後,我在[AspectJ](https://en.wikipedia.org/wiki/AspectJ)上開了一門課,它允許你在這裏問的問題。 – watery
[在Java中調用方法之前和之後運行方法]的可能重複(http://stackoverflow.com/questions/9596991/run-a-method-before-and-after-a-called-method-in- java) – Swapnil
一種可能性(如@watery提到的)是使用面向方面的編程。在這種情況下,由於您想在方法調用之前和之後執行某些操作,因此可以使用['@ Around'](http://docs.spring.io/spring/docs/current/spring-framework-reference/html /aop.html#aop-ataspectj-around-advice)建議。我會推薦閱讀[Spring AOP](http://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html)文檔(因爲我認爲它比理解更容易)定期的AspectJ文檔),以便理解這些概念。 – mkobit