我真的想对@autowired的基本理解 在春天实施 反思应该以某种方式暗示其实施,但我无法弄清楚如何 你能帮我吗 ?
答案 0 :(得分:8)
通过@Autowired
自动装配是由BeanPostProcessor
实施执行的,具体为org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor
。
这个BeanPostProcessor
处理每个bean,将扫描其类(和超类)以查找任何@Autowired
注释,并且,根据注释(构造函数,字段或方法),它将采用适当的行动。
对于构造函数
任何给定bean类只有一个构造函数(最大值)可以携带它 使用' required'进行注释参数设置为true,表示 构造函数在用作Spring bean时自动装配。如果多个 非必需的构造函数带有注释,它们将是 被视为自动装配的候选人。构造函数与 匹配可以满足最大数量的依赖关系 将选择Spring容器中的bean。如果没有 候选人可以满意,然后是默认构造函数(如果存在) 将会被使用。带注释的构造函数不必是公共的。
对于字段
在构建bean之后立即注入字段 调用config方法。这样的配置字段不一定是 公共
方法
配置方法可以有任意名称和任意数量的参数; 每个参数都将使用匹配的bean自动装配 弹簧容器。 Bean属性setter方法实际上只是一个 这种通用配置方法的特例。配置方法没有 必须公开。
所有这些都是通过反思完成的。
进一步阅读: