繁体   English   中英

用于覆盖 XML 定义的 Bean 注释 - Spring

[英]Bean Annotation to override XML definition - Spring

我的 spring-boot 应用程序包含另一个库项目作为依赖项。 这个库项目有一个 spring.xml 文件,其中定义了许多 bean。 其中一个 bean 注入了另一个外部依赖项,我的项目中不需要它。 因此,当我启动我的应用程序时,这会引发错误。 我想在我的应用程序中定义相同的 bean 作为 java 配置,并使 spring-boot 忽略 spring.xml 文件中的特定 bean。 但是,我希望读取 spring.xml 中的所有其他 bean。

在本地 java 配置中定义一个 bean,其名称和类型与 spring.xml 文件中继承的 bean 相同。

使用@Primary注释您的 bean,这将使您的 bean 用于导入的 bean。

您的应用程序仍将使用您继承的所有其他 bean 的定义。

为了防止加载其他您实际上不需要的已定义 bean,您必须将 bean 创建更改为延迟配置,也就是说,它们仅在显式使用时创建。

要在创建应用程序的主 Spring 引导类中执行此操作,很可能用@SpringBootApplication/ @Configuration/ @EnableAutoConfiguration/ @ComponentScan注释,您应该在@Lazy上方添加@Lazy

通常你会明确地注释有问题的 Bean,但在这里它不能完成,因为它起源于 3rd 方 jar 中的 spring.xml 文件。 这里的想法是从 spring 配置的最高点干净地声明所有 bean 都是惰性的。

似乎您想从其他 jar 中包含 spring.xml 并在 xml 中排除一个 bean。 我不知道 spring 框架提供了一些方法。 我更喜欢将 spring.xml 文件复制到新项目并删除不必要的 bean。

暂无
暂无

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

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