Spring @Autowired - 背后发生了什么?

3

如果这个问题已经被讨论过,请原谅我,我找不到一个令人满意的答案。

当我在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字段?我不需要完整的解释,但指导我查找的方向会很棒。谢谢。

2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
3
@Autowired@Inject注解是由一个BeanPostProcessor(具体来说是AutowiredAnnotationBeanPostProcessor)解析的。这个bean后处理器拦截bean的创建(对于@ Autowired在构造函数上的情况),设置bean属性,以确保所有autowired字段都被适当地设置。

2
我不是Spring的专家,但我会回答我所知道的。当一个Spring动力的Web应用程序启动时,Spring框架会在应用程序上下文中进行bean实例化过程。在创建Bean时,Spring检查给定Bean所需的依赖项。它基于所需Bean的类型查找匹配的Bean,并在指定@Autowired注释时自动装配它。 在上面的示例中,Spring将通过应用程序上下文并创建类型为Sample1的Bean(对象)。当它构造BeanSample2时,它看到了@Autowired注释,并寻找已实例化的Sample1类型的Bean。当它发现Sample1类型的Bean时,它会将该Bean注入Sample2并完成创建Sample2。这被称为依赖注入,是Spring框架非常受欢迎的功能之一。 希望这些能帮到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,