Spring Bean の繰り返しの登録にうんざりしていませんか?あなたは一人ではありません!
Spring Boot で Bean 定義を繰り返して行き詰まったと感じたことはありますか?あなたは一人ではありません!構成が異なる同じクラスの複数の Bean を管理するのは、面倒で煩雑になる可能性があります。次のようなものが必要だとしましょう:
@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); }
このコードは複雑ではありませんが、特に同じタイプの複数の Bean を扱う場合、すぐに繰り返しになります。理想的には、冗長なコードを使用せずに、個別の設定で複数のインスタンスを登録する方法があればよいでしょう。
これは、インターフェースの実装ごとに固有の Bean を持つこととは異なります。代わりに、バリエーションを備えた 1 つのクラスを設定することについて話しています。たとえば、複数のデータベース (顧客、レポート、バックアップなど) に接続するアプリを考えてみましょう。各接続には独自の構成が必要なため、混乱なく管理することが困難になります。最終的には次のようなものを書くことになるかもしれません:
@Bean DatabaseService primaryDatabaseService() { return new DatabaseService("db-url-primary"); } @Bean DatabaseService reportDatabaseService() { return new DatabaseService("db-url-report"); }
よりシンプルなソリューションを使用すると、構成が大幅に合理化され、アプリケーション ロジックにより集中できるようになります。 MultiBeanConfig を入力します。これは、同じ Spring Bean の複数の構成を管理するために私が構築した小さなライブラリです。
MultiBeanConfig は、個別の構成を使用した Bean の複数のインスタンスのセットアップを簡素化します。これを使用すると、次のことが可能になります。
pom.xml に依存関係を含めます:
<dependency> <groupId>io.github.olufemithompson</groupId> <artifactId>multibeanconfig</artifactId> <version>0.0.3</version> </dependency>
クラスを @MultiBean でマークして、複数のインスタンスに対応できるようにします。
@MultiBean public class DatabaseService { // Your service logic }
プロパティまたは YAML ファイルで一意のバージョンを定義します:
multibean: primary-database-service: class: DatabaseService report-database-service: class: DatabaseService
これにより、primaryDatabaseService Bean と reportDatabaseService Bean がデフォルト設定で登録されます。 MultiBeanConfig は、名前をケバブケースからキャメルケースに自動的に変換します。
個別の設定を割り当てるには、各 Bean の設定にプロパティを直接追加します。各インスタンスが異なるデータベースに接続する例を次に示します:
@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); }
application.yml で各インスタンスを構成します:
@Bean DatabaseService primaryDatabaseService() { return new DatabaseService("db-url-primary"); } @Bean DatabaseService reportDatabaseService() { return new DatabaseService("db-url-report"); }
この設定により、各 Bean に一意の接続 URL が与えられます。共有設定は一般セクションでも定義できるため、構成が効率的になり、冗長性が削減されます。
構成を挿入するために @Value だけに依存する必要はありません。 Spring の @ConfigurationProperties を使用すると、プロパティを構成クラスにカプセル化できます:
<dependency> <groupId>io.github.olufemithompson</groupId> <artifactId>multibeanconfig</artifactId> <version>0.0.3</version> </dependency>
次に、DatabaseConfig を直接挿入します。
@MultiBean public class DatabaseService { // Your service logic }
MultiBeanConfig を使用して、Spring 依存関係の場合と同様に、独自に構成された Bean を注入します。
multibean: primary-database-service: class: DatabaseService report-database-service: class: DatabaseService
MultiBeanConfig は、特に機能フラグ、データ ソース、または個別の API 接続を処理する場合に、Spring Boot アプリケーションでの Bean 管理を合理化します。これにより、冗長性が削減され、コードがクリーンに保たれ、保守性が向上します。ぜひ試してみて、あなたのプロジェクトでどのように機能するか教えてください!
以上が独自の構成で複数の Spring Bean を簡単にセットアップの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。