3

我一直在想:Spring 在使用@Value注解时究竟是如何注入属性的?检查字段是否具有注释的背后机制是什么?它是使用反射和某个类找到所有带注释的类并创建注入属性的实例,还是以其他方式进行?我知道注释处理只会在编译期间使用并且不会更改代码,所以这里的幕后真的发生了什么......?

提前致谢!

4

2 回答 2

3

@Value注解类型有注解,这@Retention(value=RUNTIME)意味着信息在运行时可用(即使用反射)。

A BeanPostProcessor,特别是AutowiredAnnotationBeanPostProcessor可以在实例化后检查 bean 的字段、方法或构造函数上是否存在此注释。

于 2013-06-26T11:51:52.963 回答
1

如果 annotation-config 功能打开,那么每次 Spring 实例化一个 bean 时,它都会遍历其所有字段和方法,并使用反射检查它们是否使用 Spring 支持的注释之一进行注释。

于 2013-06-26T11:52:07.027 回答