5

我做的事情是:

  • 创建了一个属性文件(data.properties)。
  • 创建了一个 Spring.xml(我使用属性占位符)
  • 创建了一个 bean 类。
  • 我有一个类,我必须使用 url 值。
  • 我有一个 web.xml,它具有 context-param,我将 param 值设置为 Spring.xml 文件的路径。
  • 我的代码如下:

属性文件:url=sampleurl

春天.xml:

<bean
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations" value="classpath*:data.properties*"/>

</bean>

<bean id="dataSource" class="org.tempuri.DataBeanClass">
    <property name="url" value="${url}"></property>
</bean>

豆类

public class DataBeanClass extends PropertyPlaceholderConfigurer{
private String url;

public String getUrl() {
    return url;
}

public void setUrl(String url) {
    this.url = url;
}
}

web.xml 中的条目

 <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:Spring*.xml</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

现在我的问题是我不知道我应该重写 PropertyPlaceholderConfigurer 的哪个方法以及我应该如何设置变量 url 的值,以便我可以使用 getproperty() 方法从其他类调用它。

4

3 回答 3

12

您可以像这样注释您的 bean 属性,然后 spring 将自动从您的属性文件中注入该属性。

@Value("${url}")
private String url;

您不必扩展 PropertyPlaceholderConfigurer

像这样定义你的bean也会自动填充url,但注释似乎是最简单的方法

<bean id="dataSource" class="org.tempuri.DataBeanClass">
   <property name="url" value="${url}"></property>
</bean>
于 2013-11-14T06:11:21.353 回答
3

请执行以下过程以获取类中的属性文件值。

  1. 在 spring.xml 中为属性文件定义 bean
    <util:properties id="dataProperties" location="classpath:/data.properties"/>

  2. 将您的 data.properties 保存在 src/main/resources 下。

  3. 使用以下代码从属性文件中获取值,例如获取 data.properties 中 url 键的值

private @Value("#{dataProperties['url']})
String url;

于 2013-11-14T09:31:07.600 回答
0

通过 Spring.xml 中的以下命名空间元素,Spring 可以访问属性文件

<context:property-placeholder location="classpath:data.properties" />

然后你可以使用like

@Autowired
private Environment env;
...
String url=env.getProperty("url"));

笔记:

using<property-placeholder>不会将属性暴露给 Spring 环境——这意味着像这样检索值将不起作用——它将返回 null

于 2013-11-14T06:18:53.877 回答