我有这样的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;
}
我有一个带有这样注释的mapper方法:
@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的设置器?
我想在
b
方法内将它们各自的设置器周围使用c
来设置d
,null
,@Around
至fetchA()
。使用AspectJ和spring可行吗?如何在b
方法中访问c
,d
,fetchA()
的设置器?
正如我在评论中说的那样,您的问题尚不清楚,由于没有方面代码,我不得不猜测您想做什么。我的假设是,当(且仅当)从某个其他方法内部调用setter方法时,您想拦截它们。即您需要一个与控制流相关的切入点,例如cflow()
或cflowbelow()
。根据Spring manual,Spring AOP不支持这些切入点,但是您可以将Spring配置为使用完整的AspectJ with LTW (load-time weaving)。
有关详细信息,我建议您向我展示您的(MCVE,最好是在具有Maven构建的GitHub上,然后向您展示我的(具体解决方案)。