Bagaimana Cara Mendapatkan Semua Kacang yang Dikelola Musim Semi?

1. Ikhtisar

Pada artikel ini, kita akan mempelajari teknik berbeda untuk menampilkan semua kacang yang dikelola Spring dalam wadah.

2. Wadah IoC

Kacang adalah dasar dari aplikasi yang dikelola Spring; semua biji berada dalam wadah IOC, yang bertanggung jawab untuk mengelola siklus hidupnya.

Kita bisa mendapatkan daftar semua biji dalam wadah ini dengan dua cara:

  1. Menggunakan antarmuka ListableBeanFactory
  2. Menggunakan Aktuator Spring Boot

3. Menggunakan Antarmuka ListableBeanFactory

The ListableBeanFactory antarmuka menyediakan getBeanDefinitionNames () metode yang mengembalikan nama-nama semua kacang didefinisikan di pabrik ini. Antarmuka ini diimplementasikan oleh semua pabrik kacang yang memuat definisi kacang mereka terlebih dahulu untuk menghitung semua instance kacang mereka.

Anda dapat menemukan daftar semua subinterfaces yang diketahui dan kelas implementasinya di dokumentasi resmi.

Untuk contoh ini, kami akan menggunakan Aplikasi Spring Boot.

Pertama, kita akan membuat kacang musim semi. Mari buat Spring Controller FooController sederhana :

@Controller public class FooController { @Autowired private FooService fooService; @RequestMapping(value="/displayallbeans") public String getHeaderAndBody(Map model){ model.put("header", fooService.getHeader()); model.put("message", fooService.getBody()); return "displayallbeans"; } }

Kontroler ini bergantung pada Spring bean FooService lainnya :

@Service public class FooService { public String getHeader() { return "Display All Beans"; } public String getBody() { return "This is a sample application that displays all beans " + "in Spring IoC container using ListableBeanFactory interface " + "and Spring Boot Actuators."; } }

Perhatikan bahwa kami telah membuat dua kacang berbeda di sini:

  1. fooController
  2. fooService

Saat menjalankan aplikasi ini, kita akan menggunakan objek applicationContext dan memanggil metode getBeanDefinitionNames () , yang akan mengembalikan semua kacang dalam wadah applicationContext kita :

@SpringBootApplication public class Application { private static ApplicationContext applicationContext; public static void main(String[] args) { applicationContext = SpringApplication.run(Application.class, args); displayAllBeans(); } public static void displayAllBeans() { String[] allBeanNames = applicationContext.getBeanDefinitionNames(); for(String beanName : allBeanNames) { System.out.println(beanName); } } }

Ini akan mencetak semua kacang dari wadah applicationContext :

fooController fooService //other beans

Perhatikan bahwa bersama dengan biji yang kami tentukan, itu juga akan mencatat semua biji lainnya yang ada dalam wadah ini . Demi kejelasan, kami telah menghilangkannya di sini karena jumlahnya cukup banyak.

4. Menggunakan Spring Boot Actuator

Fungsionalitas Spring Boot Actuator menyediakan titik akhir yang digunakan untuk memantau statistik aplikasi kita.

Ini mencakup banyak titik akhir bawaan, termasuk / beans. Ini menampilkan daftar lengkap semua kacang yang dikelola Spring di aplikasi kita. Anda dapat menemukan daftar lengkap titik akhir yang ada di dokumen resmi.

Sekarang, kita akan menekan URL //: / beans. Kami dapat menggunakan port server default kami jika kami belum menentukan port manajemen terpisah. Ini akan mengembalikan respons JSON yang menampilkan semua biji dalam Spring IoC Container:

[ { "context": "application:8080", "parent": null, "beans": [ { "bean": "fooController", "aliases": [], "scope": "singleton", "type": "com.baeldung.displayallbeans.controller.FooController", "resource": "file [E:/Workspace/tutorials-master/spring-boot/target /classes/com/baeldung/displayallbeans/controller/FooController.class]", "dependencies": [ "fooService" ] }, { "bean": "fooService", "aliases": [], "scope": "singleton", "type": "com.baeldung.displayallbeans.service.FooService", "resource": "file [E:/Workspace/tutorials-master/spring-boot/target/ classes/com/baeldung/displayallbeans/service/FooService.class]", "dependencies": [] }, // ...other beans ] } ]

Tentu saja, ini juga terdiri dari banyak kacang lain yang berada di wadah pegas yang sama, tetapi demi kejelasan, kami telah menghilangkannya di sini.

Jika Anda ingin menjelajahi lebih lanjut tentang Spring Boot Actuator, Anda dapat menuju ke panduan Spring Boot Actuator utama.

5. Kesimpulan

Pada artikel ini, kami belajar tentang cara menampilkan semua kacang dalam Spring IoC Container menggunakan antarmuka ListableBeanFactory dan Spring Boot Actuators.

The implementasi penuh dari tutorial ini dapat ditemukan lebih pada Github.