簡體   English   中英

在 Spring 中使用 AspectJ 在映射器方法中捕獲 setter

[英]Capture setters inside mapper method using AspectJ in Spring

我有這樣的java類:

@Data
public class Lead {
    private A a;
    ...
}

@Data
public class A {
    private B b;
    private String c;
    private List<Integer> d;
}

@Data 
public class B {
    private String e;
    private String f;
}

我有一個帶有這樣注釋的映射器方法:

@FieldPermissionAnnotation("a")
public A fetchA(//Some DB Entities) {
    A a = new A();
    ...
    a.setB(fetchB());
    ...
    a.setC(fetchC());
    ...
    a.setD(fetchD());
}

我的 FieldPermissionAspect 從用戶的 db 獲取權限字段映射,如果用戶沒有給定字段的權限,則將字段設置為 null。

我得到這樣的字符串字段層次結構列表:

["a-b-e", "a-b-f", "a-c", "a-d"]

我想在 fetchA() 方法中使用 @Around 圍繞它們各自的 setter 將 b、c、d 設置為 null。 使用 AspectJ 和 spring 是否可行? 如何在 fetchA() 方法中訪問 b、c、d 的設置器?

我想集bcdnull使用@Around內部各自的設置器周圍fetchA()方法。 使用 AspectJ 和 spring 是否可行? 如何在fetchA()方法中訪問bcd的設置器?

正如我在評論中所說,您的問題不清楚,我必須猜測您想做什么,因為沒有方面代碼。 我的假設是,當(且僅當)從某個其他方法內部調用 setter 方法時,您希望攔截它們。 即你需要一個控制流相關的切入點,比如cflow()cflowbelow() 根據Spring 手冊,Spring AOP 不支持這些切入點,但是您可以將 Spring 配置為使用帶有 LTW(加載時編織)的完整AspectJ

有關更多詳細信息,我建議您向我展示您的( MCVE ,最好在 GitHub 上使用 Maven 構建),然后我向您展示我的(具體解決方案)。

暫無
暫無

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

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