使用 context:component-scan 自动装配取消管理 bean
Posted
技术标签:
【中文标题】使用 context:component-scan 自动装配取消管理 bean【英文标题】:autowire unmanage beans using context:component-scan 【发布时间】:2013-04-28 13:06:16 【问题描述】:参考下面的例子, Autowiring Unmanaged Beans Annotated With @Component 它声明您需要在 xml 文件中注册 bean,然后只有您可以将它连接到您的 Java 类中,即使您使用了 context:component-scan。 但是例子Difference between context:annotation-config vs context:component-scan [参见最高票数 (174) 的示例] 声明您可以连接 bean 而无需在 xml 文件中定义它..
所以我很困惑哪个是正确的定义??我实际上尝试并得到了第一个 url 中描述的异常(自动装配非托管 bean)。如果我们假设 xml 文件中需要 bean 定义,那么<context:annotation-config>
和<context:component-scan>
之间的真正优势或区别是什么。
我发现两个链接相互矛盾
【问题讨论】:
【参考方案1】:您可以在 XML 中混合和匹配声明 bean 并使用 @Component/@Service/@Repository 注释它们。您可以在以 XML 声明的 bean 和使用 @Component/@Service/@Repository 注释的 bean 中使用 @Autowired。您可以使用 @Autowired 将 XML 中声明的 bean 注入到带注释的 bean 中,并将带注释的 bean 注入到 XML 中声明的 bean 中。
仅支持使用@Autowired 对托管bean 进行依赖注入,以及其他一些功能。
http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/beans.html#beans-annotation-config
http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/beans.html#beans-classpath-scanning
“非托管”bean 是既没有在 XML 中声明也没有注释和扫描组件的 bean。您显然可以尝试使用 Spring 将依赖项注入非托管 bean,使用 AOP 和
http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/aop.html#aop-atconfigurable
【讨论】:
以上是关于使用 context:component-scan 自动装配取消管理 bean的主要内容,如果未能解决你的问题,请参考以下文章
spring注解注入:<context:component-scan>详解(转)
spring里面的context:component-scan