Heim Java javaLernprogramm Spring-: setbeAnname ()-OF-BeannameAwary-Beanfactory

Spring-: setbeAnname ()-OF-BeannameAwary-Beanfactory

Jan 28, 2025 pm 10:13 PM

spring-: setBeanName()-of-BeanNameAware-BeanFactory

Diese detaillierte Walkthrough veranschaulicht die BeanNameAware -Schroindemethode setBeanName() in einer einfachen Java -Spring -Anwendung. Lassen Sie uns Schritt für Schritt den Ausführungsfluss untersuchen.

1. Programmausführung beginnt (main ())

Das Programm startet in der Methode main(). Ein Federkontext wird mit AnnotationConfigApplicationContext initialisiert, wobei die Konfiguration von TenantConfig.class geladen wird. Die TenantService Bean wird dann abgerufen.

public static void main(String[] args) {
    AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(TenantConfig.class);
    TenantService tenantService = context.getBean(TenantService.class);
    tenantService.processTenantData();
}
Nach dem Login kopieren

2. Federkontextinitialisierung

AnnotationConfigApplicationContext verarbeitet die @Configuration -Antated TenantConfig -Klasse. Es wird das angegebene Paket (nach Bedarf einstellen basePackages einstellen) für feder verwaltete Beans (@Service usw.) durchsucht.

@Configuration
@ComponentScan(basePackages = "org.example4")
public class TenantConfig {
    @Bean(name = "tenantA-dataSource")
    public TenantDataSource tenantADataSource() { return new TenantDataSource(); }

    @Bean(name = "tenantB-dataSource")
    public TenantDataSource tenantBDataSource() { return new TenantDataSource(); }
}
Nach dem Login kopieren

3. Bean -Erstellung (Mieter)

Spring ruft die @Bean -Methoden (tenantADataSource() und tenantBDataSource()) auf, um zwei TenantDataSource Beans zu erstellen: "Tenanta-Datenource" und "Tenantb-Datenource".

4. MieterdataSource -Initialisierung

TenantDataSource implementiert BeanNameAware. Während der Bean -Initialisierung ruft Frühjahr setBeanName(String beanName) auf. Diese Methode extrahiert den Mieternamen ("Tenanta" oder "Mieter") aus dem Bean -Namen und legt die Datenbank -URL entsprechend fest.

public class TenantDataSource implements BeanNameAware {
    private String tenantName;
    private String databaseUrl;

    @Override
    public void setBeanName(String beanName) {
        this.tenantName = beanName.split("-")[0];
        this.databaseUrl = "jdbc:mysql://localhost:3306/" + tenantName + "_db";
    }

    public void connect() {
        System.out.println("Connecting to database for tenant: " + tenantName);
        System.out.println("Database URL: " + databaseUrl);
    }
}
Nach dem Login kopieren

5. Mieterservice -Bohnen -Schöpfung

Fund findet TenantService (@Service). Der Konstruktor verwendet @Qualifier, um anzugeben, welche TenantDataSource Beans injizieren soll.

@Service
public class TenantService {
    private final TenantDataSource tenantADataSource;
    private final TenantDataSource tenantBDataSource;

    @Autowired
    public TenantService(@Qualifier("tenantA-dataSource") TenantDataSource tenantA,
                         @Qualifier("tenantB-dataSource") TenantDataSource tenantB) {
        this.tenantADataSource = tenantA;
        this.tenantBDataSource = tenantB;
    }

    public void processTenantData() {
        System.out.println("Processing data for all tenants...");
        tenantADataSource.connect();
        tenantBDataSource.connect();
    }
}
Nach dem Login kopieren

6. Abrufen von Mieterservice

In main() wird TenantService aus dem Kontext abgerufen (context.getBean(TenantService.class)). Es ist vollständig mit seinen Abhängigkeiten initialisiert.

7. Aufrufen processTenantdata ()

tenantService.processTenantData() heißt.

8. Datenbankverbindung

tenantADataSource.connect() und tenantBDataSource.connect() werden aufgerufen, Druckverbindungsdetails.

9. Programmabschluss

Das Programm endet nach der Verarbeitung von Mieterdaten.

Komplette Konsolenausgabe:

<code>Processing data for all tenants...
Connecting to database for tenant: tenantA
Database URL: jdbc:mysql://localhost:3306/tenantA_db
Connecting to database for tenant: tenantB
Database URL: jdbc:mysql://localhost:3306/tenantB_db</code>
Nach dem Login kopieren

Weitere Informationen zu BeanFactory finden Sie in der Spring Framework -Dokumentation. Dieses Beispiel zeigt, wie BeanNameAware Beans über ihre zugewiesenen Namen im Federcontainer informiert sein und dynamische Konfiguration basierend auf diesen Namen ermöglicht.

Das obige ist der detaillierte Inhalt vonSpring-: setbeAnname ()-OF-BeannameAwary-Beanfactory. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Mar 17, 2025 pm 05:35 PM

Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache? Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache? Mar 17, 2025 pm 05:44 PM

In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden? Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden? Mar 17, 2025 pm 05:43 PM

In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung? Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung? Mar 17, 2025 pm 05:46 PM

In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.

Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement? Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement? Mar 17, 2025 pm 05:45 PM

In dem Artikel werden benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning- und Abhängigkeitsmanagement erstellt und verwendet, wobei Tools wie Maven und Gradle verwendet werden.

See all articles