直接从Spring上下文获取.properties文件中的值

时间:2014-08-06 13:04:26

标签: spring

在标准的Spring应用程序中,可以定义PropertyPlaceholderConfigurer,它将加载一个或多个属性文件。然后,文件中定义的值对应用程序的其余部分可见,包括XML("${}")和Java(@Value)。

加载上下文后,有没有办法从上下文中获取这样的属性值,方法与检索bean的方式类似(ctx.getBean("bean-name"))?

我尝试了以下操作,但它不起作用:

GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
ctx.load("classpath:META-INF/spring/spring-context.xml");
ctx.refresh();
ctx.start();
ctx.getEnvironment().getProperty("key-name")); // RETURNS NULL

由于

3 个答案:

答案 0 :(得分:4)

您需要访问BeanFactory

ctx.getBeanFactory().resolveEmbeddedValue("${key-name}");

答案 1 :(得分:1)

请参阅此答案,了解一种简单的方法,该方法可以通过将名为EmbeddedValueResolverAware的接口添加到要在其中解析属性值的类来实现。

https://stackoverflow.com/a/16106729/1325237

答案 2 :(得分:0)

可以使用Environment方法从resolvePlaceholders中检索嵌入式变量。请注意,您需要将其包装在${}中:

ctx.getEnvironment().resolvePlaceholders("${key-name}")