我想让Spring分配一个属性值。
public class Foobar {
@Value("${example.property.foo:bar}")
private String foo;
}
假设我想在几个不同的地方引用 example.property.foo
,所以我宁愿将该标志分配为 Foobar 上的常量:
public class Foobar {
public static final String FOO_PROPERTY_FLAG = "example.property.foo";
}
example.property.foo=whatever
的设置发生在其他地方(作为系统属性,或在 @TestPropertySource
中)。
如何在注释中引用FOO_PROPERTY_FLAG
?这有效:
@Value("${" + FOO_PROPERTY_FLAG + ":bar}")
但是有点丑。我可以在这里使用 "#{}"
表达式语法吗?
@Value("${#{FOO_PROPERTY_FLAG}:bar}") // doesn't work; value is never injected
最佳答案
你可以这样做:
public static final String KEY = "propertyName";
@Value("#{T(a.b.c.package.MyConstants).KEY}")
重要的部分是指定包和类。否则 spring 将尝试在实际执行 SpEL 的 BeanExpressionContext 中查找常量
关于java - 如何在 Spring `@Value` 注释中插入类常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45618779/