Rumah >Java >javaTutorial >Bagaimana untuk menyelesaikan masalah kegagalan untuk memulakan springboot ditentukan profil

Bagaimana untuk menyelesaikan masalah kegagalan untuk memulakan springboot ditentukan profil

王林
王林ke hadapan
2023-05-11 18:46:121087semak imbas

    Profil yang ditentukan Springboot gagal dimulakan

    Biasanya, pakej balang springboot dimulakan melalui –spring.profiles.active=dev, yang boleh dibaca Aplikasi -maklumat fail konfigurasi -dev.yml, mulakan

    Semuanya sentiasa mengalami kemalangan

    Permulaan ini sangat pelik Memasuki parameter persekitaran permulaan ini masih tiada kesan,

    Bagaimana untuk menyelesaikan masalah kegagalan untuk memulakan springboot ditentukan profil

    Ia sangat menakutkan, sangat tidak dijangka!

    Daripada membaca application-dev.yml, ia membaca fail application.yml lalai

    Walau bagaimanapun, menggunakan parameter permulaan jvm : java -jar -Dspring.profiles.active=dev, ia boleh dimulakan, yang membuktikan bahawa fail konfigurasi dev adalah sah

    Bandingkan projek lain

    penemuan kelas kemasukan aplikasi:

    public static void main(String[] args){
    	SpringApplication.run(Application.class,args);
    }

    Apabila memanggil kaedah run, tiada args dihantar masuk!

    Baca kod sumber dan ketahui, masukkan parameter permulaan, kemudian huraikan parameter masuk dan tetapkan sifat

    SpringBoot membolehkan kami mempunyai berbilang fail konfigurasi, dan kemudian memuatkan fail konfigurasi yang sepadan secara dinamik berdasarkan keadaan apabila projek dimulakan. Kini terdapat tiga konfigurasi, satu fail konfigurasi lalai (application.properties: kerana ia adalah nama yang ditentukan oleh SpringBoot, jadi ia dipanggil fail konfigurasi lalai) dan dua fail konfigurasi persekitaran yang ditentukan (application-prod .properties dan application-dev .properties: berkaitan dengan persekitaran yang sepadan, jadi ia dipanggil fail konfigurasi persekitaran yang ditetapkan)

    application-dev.properties

    Maklumat konfigurasi pembangunan simulasi

    person.name=ZhangSan
    person.age=18

    application-prod.properties

    Simulasikan maklumat konfigurasi pengeluaran

    person.name=LiSi
    person.age=19

    application.properties

    Nyatakan nombor port perkhidmatan dan fail konfigurasi yang perlu dimuatkan apabila projek bermula, SpringBoot akan secara automatik memadankan aplikasi-{spring.profiles.active}.properties, dan kemudian mencari fail konfigurasi application-dev.properties

    server.port=8080
    spring.profiles.active=dev #我们可以指定SpringBoot在启动时加载那个对应的配置文件

    Kod kes

    dicipta kelas Orang kes dan biarkannya Apabila dibuat seketika, baca maklumat daripada fail konfigurasi, baca peraturan: orang.{property name}, buat tika baharu Orang dan tambahkannya pada bekas IOC.

    Buat permintaan dapatkan dan kembalikan contoh Person kami. Mari lihat jika nilai atribut perosn boleh memuatkan fail konfigurasi yang sepadan mengikut atribut spring.profiles.active yang kami tentukan dalam fail konfigurasi application.properties nilai dalam contoh nilai yang dijangkakan?

    @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 //Buat permintaan dapatkan dan kembalikan contoh Person kami. Mari lihat jika nilai atribut perosn boleh ditentukan dalam fail konfigurasi spring mengikut aplikasi. Fail konfigurasi properties. Atribut .profiles.active memuatkan fail konfigurasi yang sepadan Adakah nilai dalam instance Person adalah nilai yang dijangkakan

    @RequestMapping("/user")
    public class PersonController {
     
        @Autowired
        private Person person;
     
        @GetMapping
        public Person getPerson() {
            return person;
        }
    }

    Apabila projek dijalankan, lawati http://localhost:8080/user? dan hasilnya dikembalikan:

    {"name":"ZhangSan","age":18}

    Tukar nilai spring.profiles.active dalam aplikasi .properties untuk prod dan meminta akses kepada http: //localhost:8080/user, kembalikan hasil:

    {"name":"LiSi","age":19}

    Selain itu, jika kami telah memasang projek Dibungkus ke dalam balang, anda boleh menentukan nilai spring.profiles.active dengan memberikan nilai kepada parameter melalui baris arahan apabila memulakan projek SpringBoot

    java -jar .\web-02-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev

    Satu lagi yang lebih praktikal ialah SpringBoot memuatkan application.properties dan Laluan dan keutamaan application.yaml (dilihat daripada dokumentasi SpringBoot rasmi: https://docs.spring.io/spring-boot/docs/current/reference /html/features.html#features.external-config. application-json), keutamaan memuatkan:

    application.properties dan application.yaml

    di bawah /config/{first- subdirektori level} di bawah direktori di mana pakej jar terletak

    application.properties dan application.yaml di bawah /config dalam direktori di mana pakej jar terletak
    • application.properties dan application.properties di bawah direktori di mana pakej jar terletak application.yaml
    • application.properties dan application.yaml dalam /config di bawah classpath
    • application.properties dan application.yaml di bawah classpath
    • Senarionya ialah: projek kami telah berjalan untuk masa yang lama dan fail konfigurasi perlu diubah suai disebabkan kecemasan. Tetapi kami tidak berani mengubah suai fail konfigurasi lama pada masa ini, kami boleh meletakkan fail penyelarasan baharu kami di tempat yang mempunyai keutamaan tinggi.

    Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah kegagalan untuk memulakan springboot ditentukan profil. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam