Spring JavaConfig for java.util.Properties field

2022-09-03 06:23:15


你能告诉我如何使用Spring Javaconfig直接加载/自动将属性文件加载/自动连接到java.util.Properties字段吗?

谢谢!

稍后编辑 - 仍在搜索答案:是否可以使用Spring JavaConfig将属性文件直接加载到java.util.Properties字段中?


答案 1

XML 基本方式:

在弹簧配置中:

<util:properties id="myProperties" location="classpath:com/foo/my-production.properties"/>

在你的班级中:

@Autowired
@Qualifier("myProperties")
private Properties myProperties;

仅 JavaConfig

看起来有一个注释:

@PropertySource("classpath:com/foo/my-production.properties")

使用 this 对类进行批注会将属性从文件加载到环境中。然后,必须将环境自动连接到类中以获取属性。

@Configuration
@PropertySource("classpath:com/foo/my-production.properties")
public class AppConfig {

@Autowired
private Environment env;

public void someMethod() {
    String prop = env.getProperty("my.prop.name");
    ...
}

我没有看到将它们直接注入Java.util.properties的方法。但是,您可以创建一个类,该类使用此用作包装器的注释,并以这种方式生成属性。


答案 2

声明一个 .PropertiesFactoryBean

@Bean
public PropertiesFactoryBean mailProperties() {
    PropertiesFactoryBean bean = new PropertiesFactoryBean();
    bean.setLocation(new ClassPathResource("mail.properties"));
    return bean;
}

遗留代码具有以下配置

<bean id="mailConfiguration" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
  <property name="location" value="classpath:mail.properties"/>
</bean>

如上所示,将其转换为Java配置非常容易。


推荐