【发布时间】:2015-03-06 20:40:28
【问题描述】:
我有一个身份验证服务,我想在运行时自动配置它,但它会被模拟用于开发和测试。我想使用@ConfigurationProperties 功能来定义必要的参数,但我还需要能够仅根据是否配置实时服务有条件地创建AuthenticationManager 实例。
我想采用的方法是使用 @ConditionalOnBean(AuthProperties.class) 之类的东西,但是
无论属性是否存在,Spring Boot 都会创建我的 @ConfigurationProperties 类的 bean。我可以将验证注释应用于字段,但如果未配置实时服务,则上下文根本不会启动。
是否有一种简洁的方法可以使配置部分以 @ConfigurationProperties 类中指定的属性为条件而不重复 @ConditionalOnProperty 中的属性名称?
【问题讨论】:
-
@ConfigurationProperties对象也可用于指定默认值,@ConditionalOnProperty(当然)不会采用这些默认值。所以这仍然是一个非常相关的问题。
标签: java spring spring-boot