创建第一个简单测试时,我假设已注入FooService,但由于没有为该Service接口注册任何bean,所以我得到了ApplicationContext Exception 。在此测试中,我没有为Yaml中的“ service-type”设置任何值,而是依靠默认的“ foo”。
我的错误在哪里?我不能在两个bean上使用ConditionalOnMissingBean吗?评估属性条件时是否不考虑默认的“ foo”?还有其他方法可以解决一般问题:提供比默认bean更多的功能,并且仍然允许用户覆盖吗?
实现由进行检查OnPropertyCondition,Environment以检查属性是否存在。在带@ConfigurationProperties注释的类中添加属性不会将该值添加到属性中。因此,检查仍然失败。
但是,@ConditionalOnPropertyals具有matchIfMissing可以设置的属性。默认值是false这样,如果将其设置为true,则其值foo将与未显式设置的值匹配。
@ConditionalOnProperty(name="service-type",
havingValue = "foo",
matchIfMissing=true)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。