ホームページ > Java > &#&チュートリアル > springbootで指定したプロファイルが起動できない問題を解決する方法

springbootで指定したプロファイルが起動できない問題を解決する方法

王林
リリース: 2023-05-11 18:46:12
転載
1113 人が閲覧しました

    Springboot は指定されたプロファイルを開始できませんでした

    通常、springboot を開始する jar パッケージは –spring.profiles.active=dev. application を通じて読み取ることができます。 -dev.yml 設定ファイル情報、起動してください

    すべてに事故がつきものです

    この起動は非常に奇妙です。この起動環境パラメータを入力してもまだ効果がありません、

    springbootで指定したプロファイルが起動できない問題を解決する方法

    これはとても怖いし、とても予想外です!

    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 プロファイル、設定ファイルの読み込み優先順位

    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在启动时加载那个对应的配置文件
    ログイン後にコピー

    Case code

    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

    • # jar パッケージが配置されているディレクトリーの下の ##application.properties および application.properties application.yaml

    • classpath

      ## 内の/config 内の application.properties および application.yaml

    • #クラスパスの下のapplication.propertiesとapplication.yaml
    • シナリオは次のとおりです: プロジェクトは長期間実行されており、構成ファイルを変更する必要があります緊急事態のため。ただし、古い設定ファイルを自由に変更する勇気はなく、この時点では、新しい調整ファイルを優先度の高い場所に置くことができます。

    以上がspringbootで指定したプロファイルが起動できない問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    関連ラベル:
    ソース:yisu.com
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート