Jan*_*Jan 10 resources spring properties-file
我有一个包含很多值的属性文件,我不想单独列在我的bean-configuration文件中.例如:
<property name="foo">
<value>${foo}</value>
</property>
<property name="bar">
<value>${bar}</value>
</property>
Run Code Online (Sandbox Code Playgroud)
等等.
我想将所有完全注入java.util.Properties
或更少注入java.util.Map
.有办法吗?
rus*_*tyx 17
对于Java配置,您可以使用以下内容:
@Autowired @Qualifier("myProperties")
private Properties myProps;
@Bean(name="myProperties")
public Properties getMyProperties() throws IOException {
return PropertiesLoaderUtils.loadProperties(
new ClassPathResource("/myProperties.properties"));
}
Run Code Online (Sandbox Code Playgroud)
如果Qualifier
为每个实例分配一个唯一的bean名称(),也可以通过这种方式拥有多个属性.
ska*_*man 14
是的,您可以使用<util:properties>
加载属性文件并将结果java.util.Properties
对象声明为bean.然后,您可以像任何其他bean属性一样注入它.
请参阅Spring手册的C.2.2.3节及其示例:
<util:properties id="myProps" location="classpath:com/foo/jdbc-production.properties"
Run Code Online (Sandbox Code Playgroud)
请记住util:
按照这些说明声明命名空间.
jel*_*ies 11
对于Java Config,请使用PropertiesFactoryBean
:
@Bean
public Properties myProperties() {
PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
propertiesFactoryBean.setLocation(new ClassPathResource("/myProperties.properties"));
Properties properties = null;
try {
propertiesFactoryBean.afterPropertiesSet();
properties = propertiesFactoryBean.getObject();
} catch (IOException e) {
log.warn("Cannot load properties file.");
}
return properties;
}
Run Code Online (Sandbox Code Playgroud)
然后,设置属性对象:
@Bean
public AnotherBean myBean() {
AnotherBean myBean = new AnotherBean();
...
myBean.setProperties(myProperties());
...
}
Run Code Online (Sandbox Code Playgroud)
希望这对那些对Java Config方式感兴趣的人有所帮助.
归档时间: |
|
查看次数: |
22540 次 |
最近记录: |