开发者社区> 问答> 正文

按属性切换spring boot bean定义并允许自定义bean

创建第一个简单测试时,我假设已注入FooService,但由于没有为该Service接口注册任何bean,所以我得到了ApplicationContext Exception 。在此测试中,我没有为Yaml中的“ service-type”设置任何值,而是依靠默认的“ foo”。

我的错误在哪里?我不能在两个bean上使用ConditionalOnMissingBean吗?评估属性条件时是否不考虑默认的“ foo”?还有其他方法可以解决一般问题:提供比默认bean更多的功能,并且仍然允许用户覆盖吗?

展开
收起
游客ufivfoddcd53c 2020-01-04 11:49:27 886 0
1 条回答
写回答
取消 提交回答
  • 实现由进行检查OnPropertyCondition,Environment以检查属性是否存在。在带@ConfigurationProperties注释的类中添加属性不会将该值添加到属性中。因此,检查仍然失败。

    但是,@ConditionalOnPropertyals具有matchIfMissing可以设置的属性。默认值是false这样,如果将其设置为true,则其值foo将与未显式设置的值匹配。

    @ConditionalOnProperty(name="service-type", 
                           havingValue = "foo", 
                           matchIfMissing=true)
    
    2020-01-04 11:49:54
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多