web-dev-qa-db-ja.com

Java Spring: `@ Value`アノテーションを使用して` Environment`プロパティを注入する方法は?

などの構造を使用して

@Component
public class SomeClass {

    @Inject
    private Environment env;

    private String key;


    @PostConstruct
    private void init() {

        key = env.getProperty("SOME_KEY_PROPERTY");

    }

    ....
}

フィールドにプロパティを割り当てることができます。

これを行うためのより短くて簡潔な形式はありますか?

32
Abdull
@Component
public class SomeClass {

    @Value("#{environment.SOME_KEY_PROPERTY}")
    private String key;

    ....
}
41
Abdull

これを実行できるはずです(PropertySourcesPlaceHolderConfigurerが登録されていると仮定)

@Value("${SOME_KEY_PROPERTY}")
private String key;
38
Biju Kunjummen

また、変数が定義されていない場合に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;
19
rustyx

環境変数をデフォルト値として追加する必要がある場合。

@Value("${awsId:#{environment.AWS_ACCESS_KEY_ID}}")
@Value("${awsSecret:#{environment.AWS_SECRET_ACCESS_KEY}}")

これは、以前の2つの回答の組み合わせです。

3
Jose Martinez