[英]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.