自定义注解
2016-10-23 02:15
85 查看
package cn.stu; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface MyController { String controller() default ""; }
package cn.stu; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface MyService { String service() default ""; }
package cn.stu; public class MyActivity { @MyController(controller="login") private String controller; @MyService(service="loginService") private String service; public String getController() { return controller; } public void setController(String controller) { this.controller = controller; } public String getService() { return service; } public void setService(String service) { this.service = service; } }
package cn.stu; import java.lang.reflect.Field; /*** * * 猜测,Spring在初始化的时候, 有一个扫描的配置, 在这里就获取某一个包下面的所有的类。 然后通过反射就对其中的类进行数据的填充。 * 进行初始化扫描下面的类。 (个人猜测) * * * 注解形式主要的也就是通过反射机制来进行数据的填充,在代码运行的时候执行。 如此理解Spring的注解的形式就好理解了。所有的注解也就 * 是一个差不多的普通类而已,只是通过反射来进行初始化和数据的填充。 * * */ public class Main { public static void main(String[] args) { String[] str = Main.getFiledInfo(MyActivity.class); for (String string : str) { System.out.println(string); } } // 反射解析注解数据 public static String[] getFiledInfo(Class<?> clazz){ String[] strData = new String[2]; Field[] fileds = clazz.getDeclaredFields(); // 反射获取所有属性,这里只是定义来属性注解 for (Field field : fileds) { if(field.isAnnotationPresent(MyController.class)){ MyController controller = (MyController)field.getAnnotation(MyController.class); String loginController = controller.controller(); strData[0] = "登录请求地址->"+loginController; }else if(field.isAnnotationPresent(MyService.class)){ MyService service = (MyService)field.getAnnotation(MyService.class); String loginService = service.service(); strData[1] = "登录业务处理->"+loginService; } } return strData; } }
打印如下:
登录请求地址->login
登录业务处理->loginService
相关文章推荐
- [SpringMVC]自定义注解实现控制器访问次数限制
- @interface 自定义注解
- 深入理解Java:注解(Annotation)自定义注解入门
- java自定义注解
- spring mvc框架源码分析(二)-自定义注解以及通过反射获取注解
- 自定义注解
- 深入理解Java:注解(Annotation)自定义注解入门
- Spring AOP从入门到放弃之自定义注解收集系统日志
- Spring Aop自定义注解拦截Controller实现日志管理
- JavaWeb【自定义注解】
- spring源码剖析(五)利用AOP实现自定义Spring注解
- 自定义注解
- Spring AOP拦截Service实现日志管理(自定义注解的方式)
- 自定义注解
- JAVA自定义注解
- 自定义注解简单实例
- 深入浅出Java Annotation(元注解和自定义注解)
- sping不通过aop就可以自动扫描自定义注解
- 自定义Java注解的方式与应用
- java反射和自定义注解的综合应用