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?我并不期待一个完整的解释,但我必须寻找的方向会很棒。谢谢。

4

2 回答 2

3

,注释由 a-专门解析@Autowired。这个 bean 后处理器拦截 bean 的创建(对于 @Autowired 在构造函数上的情况),设置 bean 的属性以确保正确设置所有自动装配字段。@InjectBeanPostProcessorAutowiredAnnotationBeanPostProcessor

于 2012-08-31T02:31:08.417 回答
2

我不是 Spring 方面的专家,但我会回答我所知道的。当 Spring 驱动的 Web 应用程序启动时,Spring 框架会在应用程序上下文中执行 bean 实例化过程。在创建 bean 时,Spring 检查给定 bean 所需的依赖项。它根据所需的 bean 类型查找匹配的 bean,并在@Autowired指定注释时自动装配它。

在上面的示例中,Spring 将遍历应用程序上下文并创建一个 bean(object) 类型Sample1。当它构造 bean 时,它会Sample2看到@Autowired注解并会寻找 type 的实例化 bean Sample1。当它找到类型的 bean 时Sample1,它将注入该 beanSample2并完成创建Sample2。这称为依赖注入,是 Spring 框架非常流行的特性之一。

希望这可以帮助。

于 2012-08-31T01:59:33.453 回答