spring 在@AutoConfiguration类中使用@ConditionalOnMissingBean时导入该类

kx1ctssn  于 2022-10-30  发布在  Spring
关注(0)|答案(1)|浏览(198)

我在一个模块中有ConfigA,在另一个模块中有ConfigB,它们看起来像以下代码片段。

@Configuration
    @Import({ConfigB.class})
public class ConfigA {
    @Bean
    Foo foo1(){}
}

@AutoConfiguration
public class ConfigB {
    @Bean
    @ConditionalOnMissingBean(name = "foo1")
    Foo foo2(){}
}

因为我要将ConfigB导入ConfigA,所以总是先创建ConfigB,因此将创建两个Foo Bean。我要将ConfigB导入ConfigA,因为我希望导入其他一些Bean。
那么,有没有办法保留@Import,但只从ConfigA示例化Foo bean,而不覆盖bean呢?

vd2z7a6w

vd2z7a6w1#

使用@ImportAutoConfiguration而不是@Import解决了这个问题。然后,首先示例化ConfigA,然后示例化ConfigB。

相关问题