私がしたことは:
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の値を設定するために何をすべきかです。
このようにBeanプロパティに注釈を付けると、Springはプロパティファイルからプロパティを自動注入します。
@Value("${url}")
private String url;
PropertyPlaceholderConfigurerを拡張する必要はありません
このようにBeanを定義すると、URLも自動入力されますが、注釈が最も簡単な方法のようです
<bean id="dataSource" class="org.tempuri.DataBeanClass">
<property name="url" value="${url}"></property>
</bean>
クラス内のプロパティファイルの値を取得するには、次のプロセスを実行してください。
Spring.xmlでプロパティファイルのBeanを定義します
_<util:properties id="dataProperties" location="classpath:/data.properties"/>
_
data.propertiesをsrc/main/resourcesの下に置いてください。
次のコードを使用して、プロパティファイルから値を取得します。たとえば、data.propertiesのURLキーの値を取得します。
private @Value("#{dataProperties['url']})
_String url;
_
プロパティファイルは、Spring.xmlの次の名前空間要素を介してSpringにアクセス可能にすることができます
<context:property-placeholder location="classpath:data.properties" />
そして、あなたはのように使うことができます
@Autowired
private Environment env;
...
String url=env.getProperty("url"));
注意:
<property-placeholder>
を使用しても、Spring Environmentにプロパティが公開されません。つまり、このような値を取得しても機能しません– nullが返されます