Spring Framework
package com.logicbig.example;import org.springframework.core.annotation.AliasFor;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public @interface AccessRole { @AliasFor("accessType") String value() default "visitor"; @AliasFor("value") String accessType() default "visitor"; String module() default "gui";}
package com.logicbig.example;import org.springframework.core.annotation.AliasFor;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@AccessRole("admin")public @interface AdminAccess { @AliasFor(annotation = AccessRole.class, attribute = "module") String value() default "service";}
package com.logicbig.example;import org.springframework.core.annotation.AliasFor;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public @interface AccessRole2 { @AliasFor("accessType") String value() default "visitor"; @AliasFor("value") String accessType() default "admin"; String module() default "gui";}