繁体   English   中英

如何在不使用xml或注释的情况下使Spring识别bean?

[英]How can I make Spring identify beans without using xml or annotations?

我正在尝试将Spring框架集成到包含数千个pojos的现有项目中。
编写xml配置文件或遍历每个文件并为类添加注释将是一项艰巨的耗时任务,因此,有没有一种方法可以使Spring扫描程序包并仅基于名称约定来标识bean?

<context:component-scan>@Component -scanning行为只是默认设置。 您可以使用基于名称的过滤器来自定义其行为。 有关示例,请参见手册的3.10.3节

<beans>

   <context:component-scan base-package="org.example">
      <context:include-filter type="regex" expression=".*Stub.*Repository"/>
      <context:exclude-filter type="annotation"
                              expression="org.springframework.stereotype.Repository"/>
   </context:component-scan>

</beans>

因此,您可以通过类的命名约定使它检测到您的bean。

第三个选项是使用@Configuration和@Bean批注以及使用基于Java的容器配置 但是随后您正在编写代码以将依赖项连接在一起并创建您的bean。

您需要问自己的第一个问题是,是否真的有必要对所有这些豆进行接线? 在系统中的所有对象中,实际上只需要连接一小部分:那些是可配置的,并且依赖于其他连接的bean。

同意博佐。

有一个解决方法-您可以定义自己的自定义BeanFactoryPostProcessor ,在其中可以放置逻辑以根据命名约定在现有项目中的类之间进行扫描,并为现有项目中的类注册BeanDefinitions。

是的,尽管这需要编码,但并不是开箱即用的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM