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");

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

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

コメント

  1. CODA より:

    appilication.propertiesになってますよー

タイトルとURLをコピーしました