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