Rumah > Java > javaTutorial > teks badan

Bagaimanakah SpringBoot memilih saya dahulu apabila memuatkan kacang?

王林
Lepaskan: 2023-05-15 21:13:04
ke hadapan
1275 orang telah melayarinya

    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();
       }
    }
    Salin selepas log masuk

    (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);
       }
    }
    Salin selepas log masuk

    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 {
       // ...
    }
    Salin selepas log masuk

    (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);
       }
    }
    Salin selepas log masuk

    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 被最先加载
       }
    }
    Salin selepas log masuk

    (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 {
       // ...
    }
    Salin selepas log masuk

    (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);
       }
    }
    Salin selepas log masuk

    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!

    Label berkaitan:
    sumber:yisu.com
    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan