Java 如何拆分Spring条件配置?

Java 如何拆分Spring条件配置?,java,spring,configuration,conditional,Java,Spring,Configuration,Conditional,我的应用程序使用自己的Spring配置条件根据设置提供bean,但由于卷的原因,我希望拆分长@configuration,而不是将@Conditional添加到数十个bean中 目前,我的主要安全配置如下 @Configuration @EnableOAuth2Client @EnableWebSecurity @Import(OptionalAuthenticationConfiguration.class) public class WebshopSecurityConfig extends

我的应用程序使用自己的Spring配置
条件
根据设置提供bean,但由于卷的原因,我希望拆分长
@configuration
,而不是将
@Conditional
添加到数十个bean中

目前,我的主要安全配置如下

@Configuration @EnableOAuth2Client @EnableWebSecurity
@Import(OptionalAuthenticationConfiguration.class)
public class WebshopSecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired(required = false)
    private OptionalAuthenticationConfiguration auth;
这里是条件配置

@Configuration
@Conditional(MyCondition.class)
public class OptionalAuthenticationConfiguration {
[...]
由于可选配置上的
@Conditional
@Import
注释失败

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'webshopSecurityConfig': Injection of autowired dependencies failed; nested exception is 
org.springframework.beans.factory.BeanCreationException: Could not autowire field: private OptionalAuthenticationConfiguration
WebshopSecurityConfig.auth; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type [OptionalAuthenticationConfiguration] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency.
Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
即使bean属性
WebshopSecurityConfig.auth
具有
required=false


有没有办法在Spring中实现这种条件配置拆分?

使
OptionalAuthenticationConfiguration
成为一个具有两种实现的接口

带有
@Conditional(MyCondition.class)
的实际实现和带有
@ConditionalOnMissingBean
的空实现


这样,当
MyCondition
不允许创建配置时,它将被占位符空实现所取代。

使
OptionalAuthenticationConfiguration
成为具有两个实现的接口

带有
@Conditional(MyCondition.class)
的实际实现和带有
@ConditionalOnMissingBean
的空实现


这样,当MyCondition不允许创建配置时,它将被一个占位符空的实现所取代。

我在这个问题中描述的内容预计会起作用。。。只要“MyCondition”正确返回真值,我的麻烦就在那里

项目上下文比这里显示的要复杂得多:“OptionalAuthenticationConfiguration”实际上是一个SpringSecuritySAML设置,它需要来自“WebSecurityConfigureAdapter”的许多bean


因此,我的代码在这两种配置之间以循环“@Import”结尾。我不得不将5个bean从“OptionalAuthenticationConfiguration”移动到“WebshopSecurityConfig”,并使每个bean都成为“有条件的”。

我在这个问题中所描述的内容预计会起作用。。。只要“MyCondition”正确返回真值,我的麻烦就在那里

项目上下文比这里显示的要复杂得多:“OptionalAuthenticationConfiguration”实际上是一个SpringSecuritySAML设置,它需要来自“WebSecurityConfigureAdapter”的许多bean


因此,我的代码在这两种配置之间以循环“@Import”结尾。我不得不将5个bean从“OptionalAuthenticationConfiguration”移动到“WebshopSecurityConfig”,并将它们每个都设置为“@Conditional”。

OptionalAuthenticationConfiguration
是一个配置为什么要自动连接它?
OptionalAuthenticationConfiguration
是一个配置为什么要自动连接它?