Rumah > Java > javaTutorial > teks badan

Sediakan Berbilang Kacang Spring dengan Mudah dengan Konfigurasi Unik

Linda Hamilton
Lepaskan: 2024-10-30 12:40:26
asal
573 orang telah melayarinya

Easily Set Up Multiple Spring Beans with Unique Configurations

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

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

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.

Memperkenalkan MultiBeanConfig

MultiBeanConfig memudahkan persediaan berbilang tika kacang dengan konfigurasi berasingan. Dengan itu, anda boleh:

  • Kurangkan kod berulang
  • Memusatkan pengurusan konfigurasi
  • Pastikan pangkalan kod anda bersih dan teratur

Ciri Teras

  • Penyediaan Berbilang Kacang: Tentukan berbilang kejadian bagi satu kelas.
  • Konfigurasi Tersuai: Kawal tetapan setiap contoh melalui sifat aplikasi anda.
  • Nilai Lalai: Gunakan nilai lalai secara automatik jika konfigurasi tertentu tiada.
  • Suntikan Automatik: Gunakan @Autowired dengan mudah untuk suntikan pergantungan.

Panduan Langkah demi Langkah

1. Tambahkan MultiBeanConfig pada Projek Anda

Sertakan kebergantungan dalam pom.xml anda:

<dependency>
    <groupId>io.github.olufemithompson</groupId>
    <artifactId>multibeanconfig</artifactId>
    <version>0.0.3</version>
</dependency>
Salin selepas log masuk
Salin selepas log masuk

2. Sediakan Kelas Kacang

Tandai kelas anda dengan @MultiBean untuk menjadikannya layak untuk berbilang contoh:

@MultiBean
public class DatabaseService {
    // Your service logic
}
Salin selepas log masuk
Salin selepas log masuk

3. Tentukan Kacang dalam Fail Konfig Anda

Tentukan versi unik dalam sifat atau fail YAML anda:

multibean:
  primary-database-service:
    class: DatabaseService
  report-database-service:
    class: DatabaseService
Salin selepas log masuk
Salin selepas log masuk

Ini mendaftarkan primaryDatabaseService dan reportDatabaseService kacang dengan konfigurasi lalai. MultiBeanConfig menterjemah nama secara automatik daripada kotak kebab kepada camelCase.

Menyesuaikan Konfigurasi Setiap Kacang

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

Konfigurasikan setiap kejadian dalam application.yml:

@Bean
DatabaseService primaryDatabaseService() {
    return new DatabaseService("db-url-primary");
}

@Bean
DatabaseService reportDatabaseService() {
    return new DatabaseService("db-url-report");
}
Salin selepas log masuk
Salin selepas log masuk

Persediaan ini memberikan setiap kacang URL sambungan yang unik. Tetapan yang dikongsi juga boleh ditakrifkan dalam bahagian umum, menjadikan konfigurasi cekap dan mengurangkan lebihan.

Cara Alternatif untuk Menyuntik Konfigurasi

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>
Salin selepas log masuk
Salin selepas log masuk

Kemudian, suntikan DatabaseConfig terus:

@MultiBean
public class DatabaseService {
    // Your service logic
}
Salin selepas log masuk
Salin selepas log masuk

Menggunakan Kacang Terkonfigurasi

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
Salin selepas log masuk
Salin selepas log masuk

Fikiran Akhir

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!

sumber:dev.to
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!