環境変数 in SpringBootを読み取る最良の方法は何ですか?
_Javaで私はそれを使ってそれをしました:
String foo = System.getenv("bar");
@Value
注釈を使用して実行できますか?
引用 ドキュメント :
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
}
}
@Valueアノテーションでそれを行うことができます:
@Value("${bar}")
private String myVariable;
見つからない場合は、コロンを使用してデフォルト値を指定することもできます。
@Value("${bar:default_value}")
private String myVariable;