1

参考下面的示例, 使用@Component 注释的自动装配非托管 Bean 它指出您需要在 xml 文件中注册 bean,然后只有您可以将其装配到 Java 类中,即使您使用了 context:component-scan。但是context:annotation-config 与 context:component-scan 之间的差异 示例 [参见票数最高的示例 (174)] 表明您可以在 xml 文件中没有定义的情况下连接 bean。

所以我很困惑哪个是正确的定义??我实际上尝试并得到了第一个 url 中描述的异常(自动装配非托管 bean)。<context:annotation-config>如果我们假设 xml 文件中需要 bean 定义,那么和之间的真正优势或区别是什么<context:component-scan>

我发现两个链接相互矛盾

4

1 回答 1

2

您可以在 XML 中混合和匹配声明 bean 并使用 @Component/@Service/@Repository 注释它们。您可以在以 XML 声明的 bean 和使用 @Component/@Service/@Repository 注释的 bean 中使用 @Autowired。您可以使用 @Autowired 将 XML 中声明的 bean 注入到带注释的 bean 中,并将带注释的 bean 注入到 XML 中声明的 bean 中。

<context:annotation-config/> 仅支持使用@Autowired 对托管bean 进行依赖注入,以及其他一些功能。

http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/beans.html#beans-annotation-config

<context:component-scan ... /> 启用 <context:annotation-config/> 启用的所有功能,此外还支持@Component/@Service/@Repository 等等。通常你只需要使用<context:component-scan/>。

http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/beans.html#beans-classpath-scanning

“非托管”bean 是既没有在 XML 中声明,也没有注释和扫描组件的 bean。您显然可以尝试使用 Spring 将依赖项注入非托管 bean,使用 AOP 和 <context:spring-configured/>。有关更多信息,请参阅此处的文档:

http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/aop.html#aop-atconfigurable

于 2013-05-04T05:55:04.763 回答