我使用的是Spring-Boot-1.1.7。 我的目的是根据string类型的属性值将bean添加到我的上下文中。
我的意思是,我可以看到很多布尔值的例子,例如:
@ConditionalOnExpression("${xxx.enabled:true}")
但我想要一个基于属性值的表达式,例如:
@ConditionalOnExpression("${server.host==localhost} or ${server.port==8080} ")
或类似的东西。
有人能告诉我一个如何做的例子吗?
答案 0 :(得分:21)
对于属性值条件我使用:
function buildList(list) {
var result = [];
for (var i = 0; i < list.length; i++) {
var item = 'item' + list[i];
result[i] = function(x) {
result.push( function() {alert(item + ' ' + list[x])} );
}(i);
}
return result;
}
答案 1 :(得分:17)
最终,这个对我有用:
@ConditionalOnExpression("'${server.host}'=='localhost'")
答案 2 :(得分:1)
如果要比较的值是文字,则需要引用它,占位符将围绕属性名称(而不是整个表达式),例如${server.host}=='localhost'
答案 3 :(得分:0)
如果您使用的是字符串值并要检查是否设置了值,您可以使用简单的“检查”:
@Component
@ConditionalOnProperty(value = "foo.value")
public class Foo {
private String value;
// getter/ setter and other stuff ...
}
如果您将foo.value: bar
添加到application.yml
文件中,则会找到该组件并将其添加到应用程序上下文中,但是如果不设置一个值,则组件将不添加。
如果要检查是否找到了组件,可以在debug: true
中使用:application.yml
。
Foo matched:
- @ConditionalOnProperty (foo.value) matched (OnPropertyCondition)
vs
Foo: Did not match:
- @ConditionalOnProperty (foo.value) did not find property 'foo.value' (OnPropertyCondition)