Bean注释覆盖XML定义 - Spring

时间:2016-10-09 13:11:31

标签: java spring spring-boot

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

2 个答案:

答案 0 :(得分:4)

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

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

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

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

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

通常你会明确地注释有问题的Bean,但是这里无法完成,因为它源自第三方jar中的spring.xml文件。这里的想法是干净地说明所有豆子都是从弹簧配置的最高点延迟。

答案 1 :(得分:1)

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