Lac*_*lev 5 java spring spring-boot
在春季启动中,我们可能会排除特定的自动配置类,这样就永远不会应用它们。基于注释的配置示例:
@SpringBootApplication(exclude = OneConfiguration.class)
Run Code Online (Sandbox Code Playgroud)
我想要为环境变量提供一个值,该值将确定一些将被排除的自动配置。有什么想法要实现吗?
小智 8
您可以默认排除此配置类:
@SpringBootApplication(exclude = OneConfiguration.class)
Run Code Online (Sandbox Code Playgroud)
然后扩展它并使其成为有条件的:
@Configuration
@ConditionalOnProperty(name = "one.configuration.condtion", havingValue = "some-value")
public class OneConfigurationConditional extends OneConfiguration { }
Run Code Online (Sandbox Code Playgroud)
创建扩展Condition检查环境变量值的类:
public class AutoConfigurationCondition extends Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return System.getenv("EXCLUDE").equals("yes");
}
}
Run Code Online (Sandbox Code Playgroud)
然后你就可以在课堂上使用它Configuration:
@Configuration
@Conditional(AutoConfigurationCondition.class)
@EnableAutoConfiguration(exclude = {OneConfiguration.class})
class AutoConfigurationExcludingConf {}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3511 次 |
| 最近记录: |