web-dev-qa-db-ja.com

Spring Bootで環境変数を読み取る

環境変数 in SpringBootを読み取る最良の方法は何ですか?
_Javaで私はそれを使ってそれをしました:

String foo = System.getenv("bar");

@Value注釈を使用して実行できますか?

18

引用 ドキュメント

Spring Bootでは、構成を外部化できるため、異なる環境で同じアプリケーションコードを使用できます。プロパティファイル、YAMLファイル、環境変数およびコマンドライン引数を使用して構成を外部化できます。プロパティ値は、@Valueアノテーションを使用してBeanに直接注入するか、SpringのEnvironment抽象化経由でアクセスするか、@ConfigurationProperties経由で構造化オブジェクトにバインドできます。

したがって、Springブートでは構成に環境変数を使用でき、Springブートでは@Valueを使用して構成からプロパティを読み取ることができるため、答えは「はい」です。


これは簡単にテストできますが、次の結果は同じです。

@Component
public class TestRunner implements CommandLineRunner {
    @Value("${bar}")
    private String bar;
    private final Logger logger = LoggerFactory.getLogger(getClass());
    @Override
    public void run(String... strings) throws Exception {
        logger.info("Foo from @Value: {}", bar);
        logger.info("Foo from System.getenv(): {}", System.getenv("bar")); // Same output as line above
    }
}
28
g00glen00b

@Valueアノテーションでそれを行うことができます:

@Value("${bar}")
private String myVariable;

見つからない場合は、コロンを使用してデフォルト値を指定することもできます。

@Value("${bar:default_value}")
private String myVariable;
18
Rlarroque