Spring Javaconfigを使用してプロパティファイルをjava.util.Propertiesフィールドに直接ロード/自動配線する方法を教えてください。java.util.PropertiesフィールドのSpring JavaConfig
ありがとうございます!
後で編集 - 回答を依然として探しています: Spring JavaConfigでプロパティファイルを直接java.util.Propertiesフィールドに読み込むことはできますか?
Spring Javaconfigを使用してプロパティファイルをjava.util.Propertiesフィールドに直接ロード/自動配線する方法を教えてください。java.util.PropertiesフィールドのSpring JavaConfig
ありがとうございます!
後で編集 - 回答を依然として探しています: Spring JavaConfigでプロパティファイルを直接java.util.Propertiesフィールドに読み込むことはできますか?
XMLベースウェイ:春のconfigに
:あなたのクラスで
<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")
これでクラスに注釈を付けると、ファイルから環境にプロパティが読み込まれます。プロパティを取得するには、環境にクラスをオートワイヤーする必要があります。
@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に直接挿入する方法はありません。しかし、ラッパーとして機能するこのアノテーションを使用するクラスを作成し、そのようにプロパティを構築することができます。
xml構成を使用してプロパティを直接注入するこの方法もあります。コンテキストXMLは、この
<util:properties id="myProps" location="classpath:META-INF/spring/conf/myProps.properties"/>
を持ち、Javaクラスは、ちょうど
@javax.annotation.Resource
private Properties myProps;
出来上がりを使用しています!それが読み込まれます。 Springはxmlの 'id'属性を使用して、コード内の変数名にバインドします。
これは古いテーマですが、より基本的な解決策もあります。
@Configuration
public class MyConfig {
@Bean
public Properties myPropertyBean() {
Properties properties = new Properties();
properties.load(...);
return properties;
}
}
PropertiesFactoryBean
を宣言する。
@Bean
public PropertiesFactoryBean mailProperties() {
PropertiesFactoryBean bean = new PropertiesFactoryBean();
bean.setLocation(new ClassPathResource("mail.properties"));
return bean;
}
レガシーコードは、Javaの設定にそれを変換する設定
<bean id="mailConfiguration" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="location" value="classpath:mail.properties"/>
</bean>
上記のように超簡単です以下でした。
ありがとうございます。 – vikingsteve
アプリケーション。YML:
root-something:
my-properties:
key1: val1
key2: val2
あなたのタイプセーフなPOJO:
import java.util.Properties;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "root-something")
public class RootSomethingPojo {
private Properties myProperties;
あなたのコンテナ設定:これはmyProperties
フィールドに直接キーと値のペアを挿入します
@Configuration
@EnableConfigurationProperties({ RootSomethingPojo .class })
public class MySpringConfiguration {
。
ありがとうございますが、私はXMLファイルなしでSpring JavaConfigのみを使用してこの結果を得る方法に興味があります。 – Roxana
@Roxana oops。私の投稿を編集しました。 – jacobhyphenated
ありがとうございました。私は確かにプロパティフィールドが必要な特別な状況があります。私はあなたの考えをラッパーで覚えていますが、もっと単純な解決法がないのだろうかと思っています。:) – Roxana