对不起,如果已经讨论过,我找不到令人满意的答案。
我不明白当我在Springframework中创建一个bean并且@Autowired到另一个bean中的字段时发生了什么。我理解@Autowired和其他注释的结果,但我不知道Spring是如何完成的。
class Sample1{
//
}
class Sample2{
@Autowired
Sample1 sample1Bean;
}
<bean id="sample1Bean" class="...Sample1"/>
<bean id="sample2Bean" class="...Sample2"/>
我的问题是spring如何在Sample2中设置字段sample1Bean?我不期待一个完整的解释,但我必须看的方向会很棒。感谢。
答案 0 :(得分:3)
@Autowired
,@Inject
注释由BeanPostProcessor
解决 - 具体为AutowiredAnnotationBeanPostProcessor
。这个bean后处理器拦截bean的创建(对于@Autowired在构造函数上的情况),bean的属性设置以确保所有自动装配的字段都被适当地设置。
答案 1 :(得分:2)
我不是春天的专家,但我会回答我所知道的。当一个Spring驱动的Web应用程序启动时,Spring框架将在应用程序上下文中进行bean实例化过程。在创建bean时,Spring会检查给定bean的必需依赖项。它根据所需的bean类型查找匹配的bean,并在指定@Autowired
注释时自动装配它。
在上面的示例中,Spring将遍历应用程序上下文并创建类型为Sample1
的bean(对象)。当它构造bean Sample2
时,它会看到@Autowired
注释,并将查找类型为Sample1
的实例化bean。当它找到类型为Sample1
的bean时,它将在Sample2
上注入该bean并完成创建Sample2
。这称为依赖注入,是Spring框架的一个非常流行的功能。
希望这会有所帮助。