Bosan dengan Pendaftaran Spring Bean Berulang-ulang? Anda Tidak Sendiri!
Pernah merasa buntu dengan definisi kacang berulang dalam Spring Boot? Anda tidak bersendirian! Menguruskan berbilang kacang dalam kelas yang sama dengan konfigurasi berbeza boleh menjadi membosankan dan berantakan. Katakan anda memerlukan sesuatu seperti ini:
@Bean MyService beanA() { // Set Configuration for bean A Configuration a = new... a.setUrl(.....) return new MyService(a); } @Bean MyService beanB() { // Set Configuration for bean A Configuration b = new... b.setUrl(.....) return new MyService(b); }
Kod ini tidak rumit, tetapi ia cepat menjadi berulang, terutamanya apabila berurusan dengan beberapa biji jenis yang sama. Sebaik-baiknya, anda mempunyai cara untuk mendaftarkan berbilang kejadian dengan tetapan yang berbeza tanpa kod berlebihan.
Ini berbeza daripada mempunyai kacang unik untuk setiap pelaksanaan antara muka. Sebaliknya, kita bercakap tentang menyediakan satu kelas dengan variasi. Contohnya, fikirkan apl yang bersambung ke berbilang pangkalan data (cth., pelanggan, pelaporan dan sandaran). Setiap sambungan memerlukan konfigurasinya sendiri, menjadikannya mencabar untuk diuruskan tanpa kekacauan. Anda mungkin akan menulis sesuatu seperti ini:
@Bean DatabaseService primaryDatabaseService() { return new DatabaseService("db-url-primary"); } @Bean DatabaseService reportDatabaseService() { return new DatabaseService("db-url-report"); }
Mempunyai penyelesaian yang lebih ringkas boleh menyelaraskan konfigurasi anda dengan ketara dan membolehkan anda lebih fokus pada logik aplikasi. Masukkan MultiBeanConfig — perpustakaan kecil yang saya bina untuk membantu mengurus berbilang konfigurasi untuk kacang Spring yang sama.
MultiBeanConfig memudahkan persediaan berbilang tika kacang dengan konfigurasi berasingan. Dengan itu, anda boleh:
Sertakan kebergantungan dalam pom.xml anda:
<dependency> <groupId>io.github.olufemithompson</groupId> <artifactId>multibeanconfig</artifactId> <version>0.0.3</version> </dependency>
Tandai kelas anda dengan @MultiBean untuk menjadikannya layak untuk berbilang contoh:
@MultiBean public class DatabaseService { // Your service logic }
Tentukan versi unik dalam sifat atau fail YAML anda:
multibean: primary-database-service: class: DatabaseService report-database-service: class: DatabaseService
Ini mendaftarkan primaryDatabaseService dan reportDatabaseService kacang dengan konfigurasi lalai. MultiBeanConfig menterjemah nama secara automatik daripada kotak kebab kepada camelCase.
Untuk menetapkan tetapan berasingan, tambah sifat terus pada setiap konfigurasi kacang. Berikut ialah contoh di mana setiap tika bersambung ke pangkalan data yang berbeza:
@Bean MyService beanA() { // Set Configuration for bean A Configuration a = new... a.setUrl(.....) return new MyService(a); } @Bean MyService beanB() { // Set Configuration for bean A Configuration b = new... b.setUrl(.....) return new MyService(b); }
Konfigurasikan setiap kejadian dalam application.yml:
@Bean DatabaseService primaryDatabaseService() { return new DatabaseService("db-url-primary"); } @Bean DatabaseService reportDatabaseService() { return new DatabaseService("db-url-report"); }
Persediaan ini memberikan setiap kacang URL sambungan yang unik. Tetapan yang dikongsi juga boleh ditakrifkan dalam bahagian umum, menjadikan konfigurasi cekap dan mengurangkan lebihan.
Anda tidak perlu bergantung sepenuhnya pada @Value untuk menyuntik konfigurasi. @ConfigurationProperties Spring membenarkan sifat merangkum dalam kelas konfigurasi:
<dependency> <groupId>io.github.olufemithompson</groupId> <artifactId>multibeanconfig</artifactId> <version>0.0.3</version> </dependency>
Kemudian, suntikan DatabaseConfig terus:
@MultiBean public class DatabaseService { // Your service logic }
Dengan MultiBeanConfig , suntik kacang anda yang dikonfigurasikan secara unik seperti yang anda lakukan dengan sebarang pergantungan Spring:
multibean: primary-database-service: class: DatabaseService report-database-service: class: DatabaseService
MultiBeanConfig memperkemas pengurusan kacang dalam aplikasi Spring Boot, terutamanya apabila mengendalikan bendera ciri, sumber data atau sambungan API yang berbeza. Ia mengurangkan lebihan, memastikan kod anda bersih dan meningkatkan kebolehselenggaraan. Cubalah dan beritahu saya cara ia berfungsi untuk projek anda!
Atas ialah kandungan terperinci Sediakan Berbilang Kacang Spring dengan Mudah dengan Konfigurasi Unik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!