我正在尝试通过SpEL expresseion获取context.xml
参数,但我得到null
。
我的代码是
public class DatabaseProperties extends PropertyPlaceholderConfigurer {
@Value("#{'${myConfigDirectory}'}")
private String dbConfigPath;
@Override
protected void loadProperties(Properties props) throws IOException
Resource location = new FileSystemResource("/spring-data-access.properties");
System.out.println("DB CONFIG PATH "+dbConfigPath);
System.out.println("DB LOCATION + "+location.getFile().getAbsolutePath());
setLocation(location);
super.loadProperties(props);
}
}
此处dbConfigPath
始终为null
。
我的配置文件位于.xml
。这是
<bean id="propertyConfigurer" class="com.properties.DatabaseProperties">
<property name="ignoreResourceNotFound" value="true"/>
</bean>
我需要这样做,以便在部署war
时,它应该使用在&context;上下文中定义的parameter
来挑选来自外部战争的属性。在dev
时,它应该从resource
文件夹中选择。
答案 0 :(得分:1)
你不需要扩展PropertyPlaceholderConfigurer,只需在配置中声明一个bean。
@Configuration
@PropertySource(
value={"classpath:/spring-data-access.properties"},
ignoreResourceNotFound = true)
public class Config {
@Value("${myConfigDirectory}}")
private String dbConfigPath;
/**
* Property placeholder configurer needed to process @Value annotations
*/
@Bean
public static PropertySourcesPlaceholderConfigurer propertyConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}