0

我有以下问题:

我为安全性创建了注释:

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
@Inherited
@Documented
public @interface Security {
     Role[] roles();
}

我现在用这个注解来注解类和方法。在某些情况下,该类使用此注解进行注解,并且该类中的特定方法也使用具有不同角色的@Security 进行注解。

如何创建@Before 通知,以捕获用@Security 注释的类中的任何一个方法或用@Security 注释的方法,以及在类和方法上都有注释的情况下获得更具体的定义。

我显然也需要注释的内容(角色)。

是否可以?

如果我在类之间有继承性,它们都具有@Security 注释以获得最具体的定义,是否也有可能?

约西

4

1 回答 1

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);
}
于 2012-11-26T15:08:40.123 回答