などの構造を使用して
@Component
public class SomeClass {
@Inject
private Environment env;
private String key;
@PostConstruct
private void init() {
key = env.getProperty("SOME_KEY_PROPERTY");
}
....
}
フィールドにプロパティを割り当てることができます。
これを行うためのより短くて簡潔な形式はありますか?
@Component
public class SomeClass {
@Value("#{environment.SOME_KEY_PROPERTY}")
private String key;
....
}
これを実行できるはずです(PropertySourcesPlaceHolderConfigurerが登録されていると仮定)
@Value("${SOME_KEY_PROPERTY}")
private String key;
また、変数が定義されていない場合にdefault valueを指定すると便利です。
@Value("${some_property:default_value}")
private String key;
そうしないと、some_property
定義されていません。
default_value
は空白にすることもできます。その場合、some_property
はオプションでした:
@Value("${some_property:}")
private String key;
(コロンに注意してください)
デフォルト値に特殊文字(ドット、コロンなど)が含まれている場合、次のようにSpELでラップします。
@Value("${some_property:#{'default_value'}}")
private String key;
環境変数をデフォルト値として追加する必要がある場合。
@Value("${awsId:#{environment.AWS_ACCESS_KEY_ID}}")
@Value("${awsSecret:#{environment.AWS_SECRET_ACCESS_KEY}}")
これは、以前の2つの回答の組み合わせです。