SpringBootでYAMLファイルから値を読み取ります
この投稿では、SpringBootアプリケーションのapplication.ymlファイルで定義された値を読み取る方法について説明します。
Spring Bootアプリケーションでは、プロパティファイル、YAMLファイル、環境変数、およびコマンドライン引数を使用して、構成を外部化できます。これは、異なる環境で同じアプリケーションコードを操作する場合に役立ちます。この投稿では、application.ymlファイルで定義された値を読み取る方法について説明します。
application.yml
以下は、以下を含む単純なYAMLファイルです。 demo.environment
と demo.hosts
プロパティ。 The demo.environment
文字列タイプであり、 demo.hosts
文字列のコレクションです。
1 2 3 4 5 |
demo: environment: prod hosts: - https://www.example1.com - https://www.example2.com |
次の例に示すように、Spring Bootは、強く型付けされたBeanがアプリケーションの構成を管理および検証できるようにするプロパティを操作する方法を提供します。
Config.java
次の構成クラスは @ConfigurationProperties
外部構成をこのクラスにバインドして検証するためのアノテーション。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Configuration; import java.util.ArrayList; import java.util.List; @Configuration @EnableConfigurationProperties @ConfigurationProperties("demo") public class Config { private String environment; private List<String> hosts = new ArrayList<>(); public String getEnvironment() { return environment; } public void setEnvironment(String environment) { this.environment = environment; } public List<String> getHosts() { return hosts; } public void setHosts(List<String> hosts) { this.hosts = hosts; } @Override public String toString() { return "{" + this.getEnvironment() + ", " + this.getHosts() + "}"; } } |
Main.java
すべてのプロパティがYAMLファイルから読み込まれるようになったので、次のオブジェクトを作成します Config
クラスを使用してプロパティを表示します CommandLineRunner
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Main implements CommandLineRunner { @Autowired private Config config; public static void main(String[] args) { SpringApplication.run(Main.class, args); } @Override public void run(String... strings) throws Exception { System.out.println(config); } } |
出力:
{prod, [https://www.example1.com, https://www.example2.com]}
これで、SpringBootでYAMLファイルから値を読み取ることができます。
こちらも参照: