我在属性文件中定义了一个属性: property=true
property=true
然后,我有了SomeClass.javaclass, 仅 当属性设置为true时, 才 应 创建一个Property Configuration bean 。 __property
SomeClass.java
property
这是我的SomeClass课:
SomeClass
public class SomeClass { //this is the proerty which I set to true or false @Value("${property}") private String property; //this is the bean which needs to be created conditionally based on the property but at the moment it does not get created @Bean @ConditionalOnProperty(name="${property}", havingValue="true") public PropertyConfiguration propertyConfig() { // doesnt print anything because the bean does not get created System.out.print(property); } }
如果我在matchIfMissing = true里面添加@ConditionalOnProperty,只是为了进行实验并查看的值是多少property,那么 确实 创建了bean , 并且我看到的值property是true。
matchIfMissing = true
@ConditionalOnProperty
true
如果我删除了matchIfMissing = true,留下的条件作为@ConditionalOnProperty(name="${property}", havingValue="true")和属性更改property=true来自true于false豆,从未创建(既不true也不对false)。
@ConditionalOnProperty(name="${property}", havingValue="true")
false
我应该怎么做才能基于该属性有条件地创建bean?
请@Configuration在您的课程上方添加。
@Configuration
组件扫描不包括您的类,为此,需要@Component在类顶部添加或任何其他继承的注释。然后,您@Bean应该从spring创建。
@Component
@Bean
希望这可以帮助。