読み込む方法
コンフィグレーションファイルに@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");
これで動的にプロパティが取得できます。
ただし、毎回読み込むのでパフォーマンスは多少劣化すると思われるので、
頻繁に値を変更しそうなところのみに限定するのが良さそうです。
コメント
appilication.propertiesになってますよー
ご指摘ありがとうございます!m(_ _)m
修正しました