通常、springboot を開始する jar パッケージは –spring.profiles.active=dev. application を通じて読み取ることができます。 -dev.yml 設定ファイル情報、起動してください
この起動は非常に奇妙です。この起動環境パラメータを入力してもまだ効果がありません、
これはとても怖いし、とても予想外です!
application-dev.yml を読み取る代わりに、デフォルトの application.yml ファイルを読み取ります
ただし、次の起動パラメーターを使用します。 jvm: java -jar -Dspring.profiles.active=dev、開始できます。これは、dev 構成ファイルが有効であることを証明します
アプリケーション クラス検出の入り口:
public static void main(String[] args){ SpringApplication.run(Application.class,args); }
run メソッドを呼び出すときに、引数が渡されませんでした!
ソース コードを読んで確認し、起動パラメータを渡し、受信パラメータを解析してプロパティを設定します
注:
注意してください、起動コードは起動パラメータを渡す必要があります!!! そうすることでのみ、起動パラメータを入力して起動時に有効にすることができます
SpringBoot では、複数の設定ファイルを保持し、プロジェクト開始時の条件に基づいて対応する設定ファイルを動的に読み込むことができます。
現在 3 つの構成があり、1 つのデフォルト構成ファイル (application.properties: SpringBoot によって指定された名前であるため、デフォルト構成ファイルと呼ばれます)、および 2 つの指定された環境構成ファイル (application-prod) .properties および application-dev .properties: 対応する環境に関連するため、指定された環境構成ファイルと呼ばれます)
application-dev.properties
シミュレーション開発構成情報
person.name=ZhangSan person.age=18
application-prod.properties
本番構成情報のシミュレーション
person.name=LiSi person.age=19
application.properties
サービスのポート番号と、必要な構成ファイルを指定するだけです。プロジェクトの開始時にロードされると、SpringBoot は application-{spring.profiles.active}.properties と自動的に一致し、application-dev.properties 構成ファイルを見つけます
server.port=8080 spring.profiles.active=dev #我们可以指定SpringBoot在启动时加载那个对应的配置文件
Createインスタンス化されたら、設定ファイルから情報を読み取り、ルール: person.{プロパティ名}を読み取り、 Person の新しいインスタンスを作成し、それを IOC コンテナに追加します。
get リクエストを作成し、Person インスタンスを返します。application.properties 構成ファイルで指定した spring.profiles.active 属性に従って、perosn 属性値が対応する構成ファイルをロードできるかどうかを確認してみましょう。インスタンスの値 期待値?
@ConfigurationProperties(prefix = "person") //初始化的时候从配置文件中读取person.{属性名}的信息赋值给当前对象 @Data public class Person { private String name; private Integer age; } @Configuration //配置文件信息,将Person实例注入到IOC容器中 public class MyConfig { @Bean public Person person() { return new Person(); } }
@RestController //get リクエストを作成し、Person インスタンスを返す アプリケーションに応じて、Spring 構成ファイルで perosn 属性値を指定できるかどうかを見てみましょう。プロパティ設定ファイル。.profiles.active 属性は、対応する設定ファイルをロードします。パーソン インスタンスの値は期待値ですか?
@RequestMapping("/user") public class PersonController { @Autowired private Person person; @GetMapping public Person getPerson() { return person; } }
プロジェクトの実行時に、http://localhost:8080/user にアクセスします。
{"name":"ZhangSan","age":18}
アプリケーションの spring.profiles.active の値を変更します。 .properties を作成し、http://localhost:8080/user へのアクセスを要求すると、結果が返されます:
{"name":"LiSi","age":19}
さらに、jar にパッケージ化されたプロジェクトをすでにインストールしている場合は、SpringBoot プロジェクトの開始時にコマンド ラインからパラメーターに値を代入することで spring.profiles.active の値を指定できます
java -jar .\web-02-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
もう 1 つのより実用的な方法は、SpringBoot が application.properties と application.yaml のパスと優先順位をロードすることです (SpringBoot の公式ドキュメントから参照: https://docs.spring.io/spring-boot/docs/current/reference /html/features.html#features.external-config.application-json)、読み込み優先順位:
application.properties および application.yaml
(/config/{first-) jar パッケージが配置されているディレクトリの下の level subdirectory}jar パッケージが配置されているディレクトリの /config の下にある application.properties および application.yaml
## 内の/config 内の application.properties および application.yaml
以上がspringbootで指定したプロファイルが起動できない問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。