关于类或方法的注释的建议

时间:2012-11-25 12:36:13

标签: spring annotations aop spring-aop

我有以下问题:

我已为安全性创建注释:

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

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

如何创建@Before建议,它将捕获使用@Security注释的类中使用@Security ot方法注释的方法,并且在类和方法都有注释的情况下获取更具体的定义。

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

有可能吗?

如果我在类之间具有相同性,并且所有这些都具有@Security注释以获得最具体的定义吗?

Yosi

1 个答案:

答案 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);
}