簡體   English   中英

Spring AOP:在建議和注釋方法之間傳遞變量

[英]Spring AOP: passing variables between advice and annotated methods

我正在編寫一些方法來處理數據庫操作。 每個方法首先獲取一個連接,執行操作,最后關閉連接。

我想知道 Spring AOP 是否可以幫助處理連接獲取和關閉。 具體來說,我想要類似的東西:

@Aspect
@Component
public class ConnAspect {
    @Around("@annotation(connHandle)")
    public void handleConnection(ProceedingJoinPoint pjp, ConnHandle connHandle) throws Throwable {
        Connection conn = datasource.getConnection();
        pjp.proceed(); // can pjp get variable conn?
        conn.close();
    }
}

@Component
public class DbOperation {
    @ConnHandle
    public void operation1(...) {
        ... // do some operation with conn
    }
    ...
}

有可能這樣做嗎? 還是我應該求助於其他解決方案? 感謝您的任何提示和答案。

不,這是不可能的,評論中的建議對您沒有幫助。 您不能神奇地將不存在的方法參數或局部變量注入方法中。 此外,您正在嘗試做的是反 AOP:不要將您的橫切關注點封裝在一個方面,而是以某種方式將方面上下文引入您的應用程序,理想情況下應該不知道該方面並在沒有它的情況下工作。 您應該描述您想要實現的目標,而不是專注於您夢想實現您的想法的特定(糟糕)設計。

此外,與為此目的濫用 AOP 相比,方法有更簡單、更反思的方法來獲取自己的注解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM