Java注解到底是怎么运行的?比如Spring的@Autowire,Struts2的@Inject等,它们是各个框架自己去运行的么?那是怎么运行的,是有对应的java代码么?javaSpringStruts注解
解决方案 »
- 配置spring的datasource中password如何弄成动态的
- is exceeding the 65535 bytes limit求解?
- 求助 如何防止web.xml 反复自动加载listener
- 请问正则中的小、中、大括号都什么意思
- 请教一个程序问题
- 各位高手,webservice返回的xml soap包可以用什么方法解析?
- 怎么在浏览器中实现曲线图啊?
- 一個簡單的struts問題
- javamail接收邮件疑难问题(望java望高手给于解答,高分相送)
- ■■高薪诚聘J2EE程序员(4000-7000元)公司在上海!!
- 一条ORACLE 的SQL语句关于group by 的
- QQ客户端和QQ服务器之间是怎么通信的,QQ客户端会独立开一个线程和QQ服务器端进行SOCKET通信吗
具体实现过程看源码吧。..
public @interface Autowire{
...
}
1.@Target元注解有8个元素的值:
(1)ElementType.TYPE -- 表明该注解可以用于到类,接口(注解),枚举上;
(2)ElementType.ANNOTATION_TYPE -- 表明该注解只能用于注解上;
(3)ElementType.FIELD -- 表明该注解能用到成员变量上;
(4)ElementType.LOCAL_VARIABLE -- 表明该注解可以用到局部变量上;
(5)ElementType.METHOD -- 表明该注解可以加到方法上面;
(6)ElementType.PARAMETER -- 表明该注解可以用到参数上;
(7)ElementType.CONSTRUTOR -- 表明该注解可以用到构造器上;
(8)ElementType.PACKAGE -- 表明该注解可以加到包上.
2.@Retention元注解有四个元素值:
(1)RetentionPolicy.CLASS -- 该注解的信息保留在程序源码里,也会保留在编译好的.class文件里面;
(2)RetentionPolicy.SOURCE -- 该注解的信息只会保留在程序源码里;
(3)RetentionPolicy.RUNTIME -- 该注解的信息在运行时可以获得,通过java的反射机制可以得到具体的信息.
3.@Document元注解表明该注解可以在javadoc中可见.
4.@Inherited被此元注解标识的注解一旦作用于具体的域,该注解将作用于该域的子类域.由于@Retention(RetentionPolicy.RUNTIME)的标注,可以在运行时通过的java的反射原理找到具体的信息.例如:Spring的@Autowire标识到了某个方法上面的话。可以通过:
Demo demo = new Demo();
Field demoField = demo.class.getField();
Annotation autowired = demoField.getAnnotation();//得到这个标识可以干很多的罗伊判断
System.out.print(autowired);//xxx.xx.xx.@Autowired
这样Spring就知道了这个成员属性被加了Autowired注解,也就创建这个属性bean并且给这个属性赋值.希望能帮到你.最近在看注解和反射知识,若有不详或错误请纠正.谢谢.