Springでpropertiesファイルに記載の項目を読み込む方法と動的に読み込む方法

読み込む方法

コンフィグレーションファイルに@PropertySourceアノテーションを付加します。

@Configuration
@PropertySource("classpath:application.properties")
public class HogeConfig {
   ...
}

利用したいクラスでpropertiesファイルに記載の項目を取得する際はValueアノテーションを付加します。

@Service
public class HogeService {
   @Value("${foo.bar}")
   private String foo;
   ....
}

${…}の形の記法はPropertySourcesPlaceholderConfigurerによってプロパティのkeyであると解釈されます。

application.propertiesに

foo.bar=hoge

という記載があれば、変数fooに”hoge”がinjectされます。

dynamicに読み込む方法

この方法だと一度読み込まれたpropertiesはキャッシュされ、ファイルを書き換えてからモジュールの再起動が必要になってしまいます。

そこで動的に値を取得する方法を探していたところ、やはりstackoverflowはすごい。

Resource resource = new ClassPathResource("/application.properties");
Properties props = PropertiesLoaderUtils.loadProperties(resource);
String foo = props.getProperty("foo.bar");

これで動的にプロパティが取得できます。

ただし、毎回読み込むのでパフォーマンスは多少劣化すると思われるので、
頻繁に値を変更しそうなところのみに限定するのが良さそうです。


投稿日

カテゴリー:

投稿者:

タグ:

コメント

“Springでpropertiesファイルに記載の項目を読み込む方法と動的に読み込む方法” への2件のフィードバック

  1. CODAのアバター
    CODA

    appilication.propertiesになってますよー

    1. とののアバター
      との

      ご指摘ありがとうございます!m(_ _)m
      修正しました

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください