„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Richten Sie ganz einfach mehrere Spring Beans mit einzigartigen Konfigurationen ein

Richten Sie ganz einfach mehrere Spring Beans mit einzigartigen Konfigurationen ein

Veröffentlicht am 08.11.2024
Durchsuche:741

Easily Set Up Multiple Spring Beans with Unique Configurations

Müde von sich wiederholenden Spring Bean-Registrierungen? Du bist nicht allein!

Fühlen Sie sich jemals mit wiederholten Bean-Definitionen in Spring Boot festgefahren? Du bist nicht allein! Die Verwaltung mehrerer Beans derselben Klasse mit unterschiedlichen Konfigurationen kann mühsam und unübersichtlich werden. Nehmen wir an, Sie benötigen so etwas:

@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);
}

Dieser Code ist nicht komplex, aber er wiederholt sich schnell, insbesondere wenn es um mehrere Beans desselben Typs geht. Im Idealfall hätten Sie die Möglichkeit, mehrere Instanzen mit unterschiedlichen Einstellungen ohne redundanten Code zu registrieren.

Dies unterscheidet sich von eindeutigen Beans für jede Implementierung einer Schnittstelle. Stattdessen geht es darum, eine Klasse mit Variationen einzurichten. Stellen Sie sich beispielsweise eine App vor, die eine Verbindung zu mehreren Datenbanken herstellt (z. B. Kunden-, Berichts- und Backup-Datenbanken). Jede Verbindung benötigt ihre eigene Konfiguration, was die Verwaltung ohne Unordnung erschwert. Am Ende könntest du so etwas schreiben:

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

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

Eine einfachere Lösung könnte Ihre Konfiguration erheblich rationalisieren und Sie könnten sich mehr auf die Anwendungslogik konzentrieren. Geben Sie MultiBeanConfig ein – eine kleine Bibliothek, die ich erstellt habe, um die Verwaltung mehrerer Konfigurationen für dasselbe Spring-Bean zu erleichtern.

Einführung in MultiBeanConfig

MultiBeanConfig vereinfacht die Einrichtung mehrerer Instanzen einer Bean mit separaten Konfigurationen. Damit können Sie:

  • Repetitiven Code reduzieren
  • Konfigurationsmanagement zentralisieren
  • Halten Sie Ihre Codebasis sauber und organisiert

Kernfunktionen

  • Mehrere Bean-Setup: Definieren Sie mehrere Instanzen einer einzelnen Klasse.
  • Benutzerdefinierte Konfigurationen: Steuern Sie die Einstellungen pro Instanz über Ihre Anwendungseigenschaften.
  • Standardwerte: Standardwerte automatisch anwenden, wenn bestimmte Konfigurationen fehlen.
  • Automatische Injektion: Verwenden Sie @Autowired ganz einfach für die Abhängigkeitsinjektion.

Schritt-für-Schritt-Anleitung

1. Fügen Sie MultiBeanConfig zu Ihrem Projekt hinzu

Fügen Sie die Abhängigkeit in Ihre pom.xml ein:


    io.github.olufemithompson
    multibeanconfig
    0.0.3

2. Richten Sie die Bean-Klasse ein

Markieren Sie Ihre Klasse mit @MultiBean, um sie für mehrere Instanzen geeignet zu machen:

@MultiBean
public class DatabaseService {
    // Your service logic
}

3. Definieren Sie Beans in Ihrer Konfigurationsdatei

Definieren Sie eindeutige Versionen in Ihren Eigenschaften oder Ihrer YAML-Datei:

multibean:
  primary-database-service:
    class: DatabaseService
  report-database-service:
    class: DatabaseService

Dadurch werden die Beans „primaryDatabaseService“ und „reportDatabaseService“ mit Standardkonfigurationen registriert. MultiBeanConfig übersetzt Namen automatisch von kebab-case in camelCase.

Anpassen von Konfigurationen pro Bean

Um separate Einstellungen zuzuweisen, fügen Sie Eigenschaften direkt zur Konfiguration jeder Bean hinzu. Hier ist ein Beispiel, bei dem jede Instanz eine Verbindung zu einer anderen Datenbank herstellt:

@MultiBean
public class DatabaseService {
   @Value("${database-config.connection-url}")
   private String connectionUrl;
}

Konfigurieren Sie jede Instanz in application.yml:

database-config:
  connection-url: 'jdbc:h2:default-url'

multibean:
  primary-database-service:
    class: DatabaseService
    database-config:
      connection-url: 'jdbc:mysql:primary-db-url'
  report-database-service:
    class: DatabaseService
    database-config:
      connection-url: 'jdbc:postgresql:report-db-url'

Dieses Setup gibt jeder Bean eine eindeutige Verbindungs-URL. Gemeinsame Einstellungen können auch in einem allgemeinen Abschnitt definiert werden, was Konfigurationen effizienter macht und Redundanz reduziert.

Alternative Möglichkeiten zum Einfügen von Konfigurationen

Sie müssen sich beim Einfügen von Konfigurationen nicht ausschließlich auf @Value verlassen. @ConfigurationProperties von Spring ermöglicht die Kapselung von Eigenschaften in einer Konfigurationsklasse:

@ConfigurationProperties("database-config")
@Configuration
public class DatabaseConfig {
    private String connectionUrl;
    private int connectionTimeout;
    // Getters and Setters
}

Dann injizieren Sie DatabaseConfig direkt:

@MultiBean
public class DatabaseService {
   private final DatabaseConfig databaseConfig;
   public DatabaseService(DatabaseConfig databaseConfig) {
       this.databaseConfig = databaseConfig;
   }
}

Verwendung der konfigurierten Beans

Injizieren Sie mit MultiBeanConfig Ihre eindeutig konfigurierten Beans wie bei jeder Spring-Abhängigkeit:

@Service
public class ApplicationService {
   private final DatabaseService primaryDatabaseService;
   private final DatabaseService reportDatabaseService;

   public ApplicationService(DatabaseService primaryDatabaseService, DatabaseService reportDatabaseService) {
       this.primaryDatabaseService = primaryDatabaseService;
       this.reportDatabaseService = reportDatabaseService;
   }
}

Letzte Gedanken

MultiBeanConfig optimiert die Bean-Verwaltung in Spring Boot-Anwendungen, insbesondere bei der Handhabung von Feature-Flags, Datenquellen oder unterschiedlichen API-Verbindungen. Es reduziert Redundanz, hält Ihren Code sauber und verbessert die Wartbarkeit. Probieren Sie es aus und lassen Sie mich wissen, wie es für Ihre Projekte funktioniert!

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/thompsonolufemi/easily-set-up-multiple-spring-beans-with-unique-configurations-3df1?1 Bei Verstößen wenden Sie sich bitte an [email protected] um es zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3