在spring </util:properties>的基于java的配置中的<util:properties>等价物

时间:2013-09-19 13:22:12

标签: java spring

基于XML的弹簧配置基于java配置的等价物

<util:properties id="mapper"  location="classpath:mapper.properties" />

然后能够在代码中使用此特定属性对象:

@Resource(name = "mapper")
private Properties myTranslator;

查看文档,我查看了

@PropertySource

注释但在我看来,无法从Environment对象单独访问特定的属性文件。

2 个答案:

答案 0 :(得分:33)

很简单,声明PropertiesFactoryBean

@Bean(name = "mapper")
public PropertiesFactoryBean mapper() {
    PropertiesFactoryBean bean = new PropertiesFactoryBean();
    bean.setLocation(new ClassPathResource("com/foo/jdbc-production.properties"));
    return bean;
}

在文档here中,您会注意到在<util:properties>之前,他们曾经使用过PropertiesFactoryBean

<!-- creates a java.util.Properties instance with values loaded from the supplied location -->
<bean id="jdbcConfiguration" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
  <property name="location" value="classpath:com/foo/jdbc-production.properties"/>
</bean>

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

答案 1 :(得分:0)

在 Spring Boot 5+ 中,src/main/resources 下的 application.properties 是约定。我发现如果您需要放置自己的自定义属性,例如“student.class.name”,那么 Spring 将自动在 Eclipse 中验证它并使用警告标记该条目,并提供为其创建元数据的选项。单击它,它将在 META-INF 下创建一个 JSON 文件。用那个。然后你可以使用 @Value("${student.class.name}" 注释注入属性。