27

在基于 java 的基于 XML 的 spring 配置的配置中,什么是等效的

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

然后能够在如下代码中使用这个特定的属性对象:

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

看着文档,我看着

@PropertySource

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

4

2 回答 2

36

很简单,声明一个PropertiesFactoryBean.

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

在此处的文档中,您会注意到,在他们制作之前<util:properties>,他们曾经使用 aPropertiesFactoryBean原样

<!-- 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 配置非常简单。

于 2013-09-19T13:39:26.680 回答
0

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

于 2021-01-14T01:00:09.943 回答