我有以下问题:
我已为安全性创建注释:
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
@Inherited
@Documented
public @interface Security {
Role[] roles();
}
我现在用这个注释注释类和方法。在某些情况下,该类使用此注释进行注释,并且此类中的特定方法也使用具有不同角色的@Security进行注释。
如何创建@Before建议,它将捕获使用@Security注释的类中使用@Security ot方法注释的方法,并且在类和方法都有注释的情况下获取更具体的定义。
我显然也需要注释的内容(角色)。
有可能吗?
如果我在类之间具有相同性,并且所有这些都具有@Security注释以获得最具体的定义吗?
Yosi
答案 0 :(得分:1)
这应该有效(原生AspectJ代码,但如果您愿意,可以转换为@Aspect):
pointcut secureMethods() : execution(@Security * *(..));
pointcut secureTypes() : execution(* (@Security *).*(..));
Object around(Security security) : secureMethods() && @annotation(security) {
apply(security);
return proceed(security);
}
Object around(Security security) : secureTypes() && !secureMethods() && @target(security) {
apply(security);
return proceed(security);
}