web-dev-qa-db-ja.com

クラスのSpring Beanクラス内のプロパティ値を取得するにはどうすればよいですか?

私がしたことは:

  • プロパティファイル(data.properties)を作成しました。
  • Spring.xmlを作成しました(私はプロパティプレースホルダーを使用しています)
  • Beanクラスを作成しました。
  • Url値を使用する必要があるクラスがあります。
  • Context-paramを含むweb.xmlがあります。ここで、param値をSpring.xmlファイルのパスに設定します。
  • 私のコードは以下のとおりです:

Propertyfile:url = sampleurl

Spring.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のどのメソッドをオーバーライドする必要があるのか​​わからないことと、getproperty()メソッドを使用して他のクラスから呼び出すことができるように変数urlの値を設定するために何をすべきかです。

5
antony.ouseph.k

このようにBeanプロパティに注釈を付けると、Springはプロパティファイルからプロパティを自動注入します。

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

PropertyPlaceholderConfigurerを拡張する必要はありません

このようにBeanを定義すると、URLも自動入力されますが、注釈が最も簡単な方法のようです

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

クラス内のプロパティファイルの値を取得するには、次のプロセスを実行してください。

  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;_

3
shrey

プロパティファイルは、Spring.xmlの次の名前空間要素を介してSpringにアクセス可能にすることができます

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

そして、あなたはのように使うことができます

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

注意:

<property-placeholder>を使用しても、Spring Environmentにプロパティが公開されません。つまり、このような値を取得しても機能しません– nullが返されます

0