[英]AOP pointcut expression for specific annotated variable
我有這樣的情況。
自定義注釋定義...
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface CacheMe{
String node();
}
用戶詳細信息類別...
class User {
String name;
String ssn;
}
還有一個以“ User”對象作為變量並使用@CacheMe注釋的類
Class Test{
@CacheMe(node="user")
User user;
public User getUser(Long id){
if(user != null){
user = someImplementingClass.getUserDetails(id);
}
....
.....
}
}
當驗證“用戶”對象為null或訪問用戶對象時,我需要切入點表達式。 我正在使用基於Spring模式的AOP。
謝謝你的時間。
正如前面的評論中指出的那樣,spring AOP不支持領域級別的建議。 原因是因為Spring AOP使用代理(在類或接口級別,具體取決於特定方案)。 代理包裝一個實例,並能夠檢測方法調用。 如果考慮到這一點,包裝器將無法檢測到屬性修改,因為根本無法覆蓋屬性,因此只能從Java角度對其進行陰影處理。
借助Spring AOP,您將能夠為吸氣者和設置者提供建議,但是如果您需要現場咨詢,那么您唯一的選擇就是AspectJ。 (如果您需要建議構造函數和異常引發,則同樣適用)。
在此處查看快速的AspectJ參考,並牢記如果走這條路,可能需要使用這些切入點:
另外,如果您決定使用AspectJ,則需要在應用程序中進行一些設置,並確定是希望使用Load-weaving還是Compile-Time-Weaving。 這項決定會帶來重要的后果,您可能需要牢記 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.