如何从Spring Condition访问文件属性?

时间:2018-04-28 08:20:47

标签: java spring

假设我们有一个简单的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}”字符串(显然,该属性尚未解析)。

2 个答案:

答案 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