我无法使用@Value注释获取spring application.properties中定义的属性。不知怎的,我知道我们必须在rootConfig中注册propertysourcesplaceholderconfigurer bean,这个注册方法是 static 。
@Bean
public static PropertyPlaceholderConfigurer properties() {
PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer();
ClassPathResource[] resources = new ClassPathResource[ ] {
new ClassPathResource("db.properties")
};
ppc.setLocations( resources );
ppc.setIgnoreUnresolvablePlaceholders( true );
ppc.setSearchSystemEnvironment(true);
return ppc;
}
此处的问题是来自 cmis 的 application.properties ,并且仅在创建applicationContext时初始化资源加载器。完成applicationContext后,在rootConfig中,通过Environment.getProperty(XXX),可以获取属性值。
还有其他方法吗?
我想知道即使我可以使用@conditionOnProperty访问该属性而不使用PropertyPlaceholderConfigurer。有没有类似的方法?
答案 0 :(得分:0)
<强> application.propertes 强>
application.angular.rooturl = http://localhost:8080/test
我使用@value
的Java类@Configuration
@PropertySource(value="classpath:application.properties")
public class ApplicationPropertyConfig {
public static String ROOTURL;
@Value("${application.angular.rooturl}")
public void setANGULAR_ROOTURL(String aNGULAR_ROOTURL) {
ANGULAR_ROOTURL = aNGULAR_ROOTURL;
}
}
然后我可以使用ApplicationPropertyConfig.ROOTURL