2017-04-05 46 views
0

我想要做的是创建一个自定义注释,以便在服务上使用它,并且每次从那里调用一个方法时,首先执行一些操作。例如:在Java中创建自定义注释,并在调用方法时使用它

@CustomAnnotation 
public Class MyService{ 

    public void myMethod(){ 
     //do something 
    } 
} 

当myMethod被调用时,在代码执行之前做一些事情,然后做它必须做的事情。 有没有办法做到这一点?我需要做注释,使用接口或继承是没用的,因为对于每种方法,而不仅仅是一种。

我知道如何扫描一个包来获得批注的类,但我不知道如何在运行时检查它在应用程序运行时。

谢谢!

+0

Afaik,你想要的就是所谓的AOP(面向方面​​的编程)...在运行时的注释方法之前执行的东西的例子:http://www.yegor256.com/2014/06/01/aop-aspectj -java-method-logging.html –

+0

http://www.oracle.com/technetwork/articles/hunter-meta-3-092019.html –

+0

谢谢你的答案!使用Around和Aspect注释的方法会自动执行?如果我在那里定义行为,它应该在运行mvn install后运行良好? – Motomine

回答

0

看来,你需要的可能是通过使用AOP(面向方面​​的编程)来实现。

我发布了代码示例here。它在注释方法之前执行一些代码,并且不执行其他代码。

AOP允许您在不干涉包含方法的类的代码的情况下做到这一点,您可以在不更改方法本身及其调用代码的情况下更改方法行为。您甚至可以使用此技术跳过方法执行(使用@Around建议)。例如,如果您在允许方法执行之前需要安全检查,这很有用。

相关问题