我遇到了一个无法从我的Java代码访问Spring属性的问题。
以下是上下文:
<context:property-placeholder ignore-resource-not-found="false"
location="file:/${setup.properties.directory}/setup.properties"/>
setup.properties
文件如下所示:
paymentProvider.x.url=x
代码是:
SpringContext.INSTANCE.getEnvironment()
.getProperty("paymentProvider.x.url");
运行期间没有错误。但是,上面代码的结果为null
。
任何人都知道为什么?
答案 0 :(得分:0)
修改context:property-placeholder
配置,例如:
<context:property-placeholder location="classpath:setup.properties" />
如果要在该类级别访问此属性值,请使用一个注释,如:
@PropertySource(value = { "classpath:setup.properties" })
并在该类中读取属性值autowire Environment
,如:
@Autowired
private Environment environment;
最后你可以访问:
environment.getRequiredProperty("paymentProvider.x.url");
答案 1 :(得分:0)
只有
@Configuration
@PropertySource("file:/${setup.properties.directory}/setup.properties")
public class SpringContext {
public static final ApplicationContext PROPERTIES_INSTANCE = new AnnotationConfigApplicationContext
(SpringContext.class);
}
适合我。