2010-04-08 74 views
1

有沒有辦法使用註釋用於運行函數之前當前調用的函數,是這樣的:如何在使用註釋的當前函數之前運行函數?

public void doSomethingEarlier() { 
} 

@DoSomethingEarlier 
public void doSomething() { 
} 

所以我想打電話給doSomethin()函數,並執行該功能之前我想自動運行doSomethingEarlier()函數。

回答

2

你有多種方式,這是一個有點難以實現:

  • 使用Proxy在那裏你可以解析的目標方法的註釋和調用一個方法具有相同的名稱
  • 使用AOP

第一種方法更直接。將註釋看起來可能會更好:

@BeforeMethod("methodName") 

一般來說,這是AOP如何在低級別上工作的。

+0

你必須定義註釋並編寫代理代碼,不是嗎? – bmargulies 2010-04-08 20:44:15

+0

是(15個字符)。 – Bozho 2010-04-08 20:48:59

0

請參閱Spring Aspect Oriented Programming。

Java不會爲你做這件事。其他人:您或某個庫:必須查看註釋並調整呼叫過程。

0

是的,你可以使用註解。您必須創建自己的@DoSomethingEarlier註釋(具有運行時保留),並且必須爲自己的註釋處理器處理器編碼。這不是一個簡單的命題,你可能想看看像AOP或動態代理其他替代品(這可能不是容易的事。)

0

這種情況很容易...

public void doSomethingEarlier() { 
} 

public void doSomething() { 
    doSomethingEarlier(); 
} 
相關問題