2017-04-05 108 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建議)。例如,如果您在允許方法執行之前需要安全檢查,這很有用。

相關問題