注解和xml一样只是起到一个配置的作用。注解的本身是不可能完成这种拦截功能的。我们后面会通过注册一个驱动了去解析这个注解,完成这个注解背后所代表的功能。
新建注解:
public @interface Permission {
}
我们这个项目是通过两个属性来代表这个权限的,所以我们这里也需要两个属性。
public @interface Permission {
String module();
String privilege();
}
标注@Retention
通过这个注解来表标注:这个注解的配置在这个java类中的存放的范围,比如:
@Retention(RetentionPolicy.SOURCE)
只能保留在源代码上面,一但被编译成class之后这个注解就会丢失
@Retention(RetentionPolicy.CLASS)
在源代码中和编译过后的class中都回存在这个注解,但是当这个类被装载进java虚拟机后,这个注解就会丢失了
@Retention(RetentionPolicy.RUNTIME)
代表这个注解要保留至运行期
所以我们这里一定要标注为运行期
@Retention(RetentionPolicy.RUNTIME)
public @interface Permission {
String module();
String privilege();
}
@Target
用来标识这个注解他可以标注在什么地方。
@Target({ElementType.FIELD})
可以标注在字段上面
@Target({ElementType.FIELD,ElementType.METHOD})
也可以标注在方法上面
@Target({ElementType.FIELD,ElementType.METHOD,ElementType.TYPE})
也可以标注在类型上面
我们这里只需标注在方法上面就可以了:
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface Permission {
String module();
String privilege();
}