Spring Javaconfig を使用してプロパティ ファイルを java.util.Properties フィールドに直接ロード/自動配線する方法を教えてください。
ありがとう!
後で編集 - まだ答えを探しています: Spring JavaConfig を使用してプロパティ ファイルを java.util.Properties フィールドに直接ロードすることは可能ですか?
Spring Javaconfig を使用してプロパティ ファイルを java.util.Properties フィールドに直接ロード/自動配線する方法を教えてください。
ありがとう!
後で編集 - まだ答えを探しています: Spring JavaConfig を使用してプロパティ ファイルを java.util.Properties フィールドに直接ロードすることは可能ですか?
XML ベースの方法:
春の設定で:
<util:properties id="myProperties" location="classpath:com/foo/my-production.properties"/>
あなたのクラスで:
@Autowired
@Qualifier("myProperties")
private Properties myProperties;
JavaConfig のみ
注釈があるようです:
@PropertySource("classpath:com/foo/my-production.properties")
これでクラスに注釈を付けると、ファイルから環境にプロパティがロードされます。次に、Environment をクラスに自動配線して、プロパティを取得する必要があります。
@Configuration
@PropertySource("classpath:com/foo/my-production.properties")
public class AppConfig {
@Autowired
private Environment env;
public void someMethod() {
String prop = env.getProperty("my.prop.name");
...
}
それらを Java.util.properties に直接注入する方法がわかりません。ただし、ラッパーとして機能するこの注釈を使用するクラスを作成し、その方法でプロパティを構築することもできます。
を宣言しPropertiesFactoryBean
ます。
@Bean
public PropertiesFactoryBean mailProperties() {
PropertiesFactoryBean bean = new PropertiesFactoryBean();
bean.setLocation(new ClassPathResource("mail.properties"));
return bean;
}
レガシーコードには次の構成がありました
<bean id="mailConfiguration" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="location" value="classpath:mail.properties"/>
</bean>
上記のように、それを Java 構成に変換するのは非常に簡単です。
これは古いテーマですが、より基本的な解決策もあります。
@Configuration
public class MyConfig {
@Bean
public Properties myPropertyBean() {
Properties properties = new Properties();
properties.load(...);
return properties;
}
}
xml 構成を使用してプロパティを直接注入するこのアプローチもあります。コンテキストxmlにはこれがあります
<util:properties id="myProps" location="classpath:META-INF/spring/conf/myProps.properties"/>
そしてJavaクラスはただ使用します
@javax.annotation.Resource
private Properties myProps;
出来上がり!ロードします。Spring は、xml の 'id' 属性を使用して、コード内の変数の名前にバインドします。