假设我们有一个简单的Spring Condition,它必须与属性文件中的文件属性匹配:
public class TestCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
context.getEnvironment().getProperty("my.property");
context.getBeanFactory().resolveEmbeddedValue("${my.property}");
context.getEnvironment().resolvePlaceholders("${my.property}");
// ... more code
}
}
不幸的是,上面提到的方法调用都没有返回属性文件中定义的属性。相反,当我调用getProperty方法时,我得到null,而对于其他两个,我得到“$ {my.property}”字符串(显然,该属性尚未解析)。
答案 0 :(得分:0)
PropertiesLoaderUtils
怎么样?只需将其放入您的方法中,而不是您拥有的方法。
// path to your .properties file
Resource resource = new ClassPathResource("/my.properties");
Properties props = PropertiesLoaderUtils.loadProperties(resource);
....
String someValue = props.getProperty("someKey", "DEFAULT_VALUE");
如果你的东西不起作用,也许试试这个。
答案 1 :(得分:0)
你有多种方法可以在春天访问属性,主要和最简单的方法如下
使用注入值
@PropertySource("classpath:foo.properties")
public class foo {
@Value("${db.driver}")
private String dbDriver;
}
或者您可以使用Environment
@PropertySource("classpath:config.properties")
public class foo {
@Autowired
private Environment env;
...
dataSource.setUrl(env.getProperty("jdbc.url"));
}
可以找到更多信息here