Rumah  >  Artikel  >  Java  >  Bagaimanakah SpringBoot memilih saya dahulu apabila memuatkan kacang?

Bagaimanakah SpringBoot memilih saya dahulu apabila memuatkan kacang?

王林
王林ke hadapan
2023-05-15 21:13:041219semak imbas

    1. Senario yang berkenaan

    • Jika kita perlu menguruskan urutan permulaan kacang tertentu dalam semua hierarki aplikasi . Sebagai contoh, anda perlu memulakan kacang apabila aplikasi bermula.

    • Jika kacang dalam perpustakaan awam kami digunakan oleh perkhidmatan pembangun lain, tetapi mereka perlu menyesuaikan kacang dalam beberapa senario, kami perlu memuatkannya di hadapan kacang yang disesuaikan ini di khalayak ramai perpustakaan.

    2. Tiga kaedah pelaksanaan

    Dalam aplikasi Spring Boot, kami boleh mengambil tiga kaedah berikut untuk melaksanakan pemuatan keutamaan kacang kami sendiri:

    1. Anotasi @Configuration + @DependsOn anotasi

    @Configuration anotasi mengisytiharkan kacang dalam aplikasi Spring Boot dan membolehkan kami menentukan keutamaan kacang. Kami kemudiannya boleh menggunakan anotasi @DependsOn untuk memberitahu dengan jelas bekas Spring di peringkat mana aplikasi kacang ini harus dimuatkan.

    Kaedah penggunaan adalah seperti berikut:

    (1) Isytiharkan anotasi @Configuration dan gunakan anotasi @DependsOn dan pastikan kacang yang dirujuk sudah wujud (boleh kacang lain atau kelas konfigurasi ).

    @Configuration 
    @DependsOn("myOrderBean") 
    public class MyOrderedBeanConfig {
       // 配置类内普通Bean
       @Bean
       public MyBean myBean() {
          return new MyBean();
       }
    }

    (2) Perkenalkan anotasi @Configuration ke dalam aplikasi Spring Boot untuk dilaksanakan apabila aplikasi bermula.

    @SpringBootApplication
    @Import(MyOrderedBeanConfig.class)
    public class DemoApplication {
       public static void main(String[] args) {
          SpringApplication.run(DemoApplication.class, args);
       }
    }

    2. Anotasi @Component + @DependsOn anotasi

    @Component Anotasi ialah salah satu cara terpantas untuk mengisytiharkan kacang dan membolehkan kami menentukan nama kacang kacang. Jika kita mahu kacang sedia ada dimuatkan dahulu apabila aplikasi bermula, maka kita boleh menggunakan anotasi @DependsOn untuk mencapainya. Apabila menentukan berbilang kacang, koma boleh digunakan untuk memisahkannya.

    digunakan seperti berikut:

    (1) Dalam kelas yang diberi anotasi dengan @Component, gunakan anotasi @DependsOn untuk menyatakan pemuatan secara eksplisit daripada pesanan kacang.

    @Component("myBean") 
    @DependsOn({"bean1", "bean2"}) 
    public class MyBean {
       // ...
    }

    (2) Perkenalkan anotasi @Component ke dalam aplikasi Spring Boot untuk dilaksanakan apabila aplikasi bermula.

    @SpringBootApplication 
    @ComponentScan(basePackages = "com.example.demo") 
    public class DemoApplication {
       public static void main(String[] args) {
          SpringApplication.run(DemoApplication.class, args);
       }
    }

    3. Laksanakan antara muka PriorityOrdered

    Laksanakan antara muka PriorityOrdered dan laksanakan kaedah getOrder() yang membolehkan kami mengawal susunan pemuatan daripada kacang. Akhir sekali, kita boleh menggunakan antara muka BeanPostProcessor untuk memastikan kacang ini dimuatkan pada kali pertama ia dijana.

    digunakan seperti berikut:

    (1) Laksanakan antara muka PriorityOrdered dan gunakan kaedah getOrder() untuk mengembalikan integer positif kepada nyatakan keutamaan kelas kacang. Semakin kecil nilainya, semakin tinggi keutamaannya.

    public class MyBean implements InitializingBean, PriorityOrdered {
       public void afterPropertiesSet() {
           // ...
       }
       public int getOrder() {
          return 0; // 这个值将确保此 bean 被最先加载
       }
    }

    (2) Sediakan contoh BeanPostProcessor dan nyatakan pesanan dengan anotasi @Order. Contoh ini akan dilaksanakan sebelum semua kacang biasa dalam kitaran hayat bekas Spring.

    @Component 
    @Order(value = 1) 
    public class MyBeanPostProcessor implements BeanPostProcessor {
       // ...
    }

    (3) Perkenalkan anotasi @ComponentScan ke dalam aplikasi Spring Boot untuk dilaksanakan apabila aplikasi bermula.

    @SpringBootApplication 
    @ComponentScan(basePackages = {"com.example.demo"}) 
    public class DemoApplication {
       public static void main(String[] args) {
          SpringApplication.run(DemoApplication.class, args);
       }
    }

    Nota

    • Menggunakan salah satu kaedah di atas dalam aplikasi anda boleh membantu anda menguruskan keutamaan kacang, tetapi ini tidak Ini bermakna ia keutamaan tidak akan diatasi oleh kacang lain.

    • Jika anda ingin menulis ganti kacang yang diisytiharkan sebelum ini, anda boleh menggunakan kacang keutamaan tinggi daripada tindanan teknologi yang sepadan untuk menulis ganti kacang yang diisytiharkan sebelum ini.

    • Anda boleh menggunakan anotasi @Order pada semua kacang atau melaksanakan antara muka Tertib untuk melaksanakan pesanan kacang.

    • Apabila menggunakan tindanan teknologi berbilang, anda boleh mencampur dan menggunakan tindanan teknologi ini untuk mencapai matlamat anda.

    Atas ialah kandungan terperinci Bagaimanakah SpringBoot memilih saya dahulu apabila memuatkan kacang?. 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