java注解,有什么用?

来源:互联网 发布:mac 虚拟机 win10 编辑:程序博客网 时间:2024/04/29 21:15

一、java注解有什么用?

注解用的最广泛的,就是spring mvc了,那么就以spring mvc的@RequestMapping 注解为例:

要明白@RequestMapping的作用,或者说工作原理。就要首先明白spring mvc的架构:




---我的总结:
1DispatcherServlet是核心,它其实就是一个servlet(即一个java类),配置在web.xml中。它是spring mvc的“主类”,其他模块(如controller、viewResolver等)的执行,都是在DispatcherServlet这个类执行的时候调用的
2handlermapping其实就是一个url到controller(即action)的xml配置文件,spring mvc也提供注解的方式来替代xml配置文件。
3handlermapping是url和controller的映射,明明可以叫controllermapping嘛,为什么叫handler不叫controller,很奇怪。

然后看,什么是注解?有什么作用?

http://www.importnew.com/10294.html


注解的用处:

      1、生成文档。这是最常见的,也是java 最早提供的注解。常用的有@param @return 等

      2、跟踪代码依赖性,实现替代配置文件功能。比如Dagger 2依赖注入,未来java开发,将大量注解配置,具有很大用处;

      3、在编译时进行格式检查。如@override 放在方法前,如果你这个方法并不是覆盖了超类方法,则编译时就能检查出。


--------关于注解,最好的文章:

http://blog.csdn.net/wangyangzhizhou/article/details/51698638


-----总结:

1注解是java类和方法的元数据,它不涉及任何业务操作。

2即然不涉及任何业务操作,为什么@override注解,如果父类中没有该方法,会报错?这不就是进行业务操作了吗?

3注解,从调用上来,也是一个java类,只是这个java类的定义有点奇怪。

调用:

Test t = AnnotationTest.class.getAnnotation(Test.class);

定义:

@Target({ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)public @interface TestMethod { String value();}

5注解即然是java类和方法的元数据,那么,注解用来干什么就很清楚了,即就起到替代配置文件的作用。注解就是为了替代xml配置文件,才诞生的。



然后再看@requestmapping这个注解:

用法如下:
http://www.cnblogs.com/caoyc/p/5635173.html

执行原理:

1程序员给某java类或者方法,设置注解。
2浏览器发起一个请求如下:http://127.0.0.1:8080/testProject/example.action。
3dispatcherservlet(参考上文spring mvc的架构,dispatcherservlet是从头到尾执行的主类)接收到请求,挨个class去执行他们的注解:
XXX.class.getAnnotation(@requestmapping.class);


二、怎么自定义注解,即自己动手写注解?

http://www.cnblogs.com/pepcod/archive/2013/02/16/2913474.html