


Wie Spring Objekte einfügt und wie der Bean-Erstellungsprozess analysiert wird
Zuerst müssen Sie eine grobe Implementierung kennen
● Dieser Injektionsprozess muss in BeanPostProcessor implementiert werden
●Spring instanziiert Beans in beanFactory.getBean, also verzögertes Laden
● Gemäß dem zweiten Artikel werden also alle BeanPostProcessor
nur aufgerufen, wenn getBean ● Im zweiten Artikel wurde erwähnt, dass der Aktualisierungsprozess von BeanFactory nur BeanPostProcessor registriert und tatsächlich in der getBean-Methode
ausgeführt wird (empfohlenes Video: Java-Video-Tutorial). )
MergedBeanDefinitionPostProcessor ist auch eine Art BeanPostProcessor. Er erstellt eine neue Lebenszyklusfunktion und ersetzt die Standardlebenszyklusfunktion von BeanPostProcessor ein kurzer Quellcode
for (BeanPostProcessor bp : getBeanPostProcessors()) { if (bp instanceof MergedBeanDefinitionPostProcessor) { MergedBeanDefinitionPostProcessor bdp = (MergedBeanDefinitionPostProcessor) bp; bdp.postProcessMergedBeanDefinition(mbd, beanType, beanName); } }
Es ermöglicht Ihnen, die Bean-Definition in einem Nicht-BeanFactoryProcess zu ändern
InstantiationAwareBeanPostProcessor ist auch ein BeanPostProcessor. Es definiert auch eine Lebenszyklusfunktion neu, die das Einfügen von Attributwerten ermöglicht in Attributobjekte
@Autowired Der Prozess des Ladens von Definitionen
Sehen wir uns zunächst nicht den Bean-Erstellungsprozess an, sondern die Implementierungsunterklasse von MergedBeanDefinitionPostProcessor Name erraten
AutowiredAnnotationBeanPostProcessor Dies sollte sein, was es tut, damit wir uns direkt den Code der postProcessMergedBeanDefinition-Methode von
AutowiredAnnotationBeanPostProcessor ansehen können.
Nach dem Methodenaufruf können Sie erkennen, dass sich diese Annotationen tatsächlich in buildAutowiringMetadata befinden. Schließlich registriert checkConfigMembers Member in der Bean-Definition. Leser, die herausfinden möchten, wie sie diese finden, können den Quellcode selbst überprüfen .
Hier registrieren wir einfach das Mitglied in der Bean-Definition, und die eigentliche Instanziierung erfolgt während des Füllvorgangs des Beans. Lassen Sie uns unten über den Bean-Erstellungsprozess sprechen, um zu erfahren, wann es injiziert wird.
Bean-Erstellungsprozess
Wie bereits erwähnt, erstellt Spring Bean im Prozess von getBean. Das Erstellen einer Bean ist in mehrere Schritte unterteilt
1. Bean-Definition abrufen
2. Neue Bean()
3. Lebenszyklusfunktion ausführen
5 die Bean
6. Führen Sie die Lebenszyklusfunktion aus (nachher)
Der Eingang ist BeanFactory.getBean und die Implementierungsklasse von BeanFactory ist DefaultListableBeanFactory. Sie finden diese im Aktualisierungsprozess von BeanFactory
Wenn die Bean laut Quellcode noch nicht existiert, wird der Bean-Erstellungsprozess ausgeführt
Holen Sie sich die Bean-Definition in diesem Quellcode
final RootBeanDefinition mbd = getMergedLocalBeanDefinition(beanName);
Folgen Sie ihr Suchen Sie nach seinen Abhängigkeiten gemäß dem Bean-Definitionselement und erstellen Sie die Bean. Es ist ersichtlich, dass die Bean rekursiv erstellt wird
String[] dependsOn = mbd.getDependsOn(); for (String dep : dependsOn) { getBean(dep); }
und dann die Bean erstellt wird
if (mbd.isSingleton()) { createBean(beanName, mbd, args); } // 真正的执行在 doCreateBean 过程中 Object beanInstance = doCreateBean(beanName, mbdToUse, args);
Der erste Schritt besteht darin, die Bean zu erstellen. Schritt 1: Führen Sie alle Prozessoren aus, einschließlich MergedBeanDefinitionPostProcessor. Registrieren Sie also die Injektionsoption > In diesem Schritt wird die Bean erstellt. Die hier durchgeführte @Autowired-Injektion ist
if (instanceWrapper == null) { instanceWrapper = createBeanInstance(beanName, mbd, args); }
der letzte Verarbeitungsprozess von AutowiredAnnotationBeanPostProcessor
applyMergedBeanDefinitionPostProcessors(mbd, beanType, beanName);
Da die Abhängigkeiten zuvor abgerufen und in den Container geworfen wurden, können Sie sie hier einfach direkt mithilfe von Reflection einschreiben.
Bean erstellen. Der vierte Schritt besteht darin, die Bean zu initialisieren. Hier gibt es eine Methodeninjektion. Die Methodeninjektion erfolgte ursprünglich während der Initialisierung der Bean, und die Lebenszyklusfunktion wird ausgeführt, einschließlich des Pre-Post-Lebenszyklus des BeanPostProcessor, der Initialisierungsmethode usw.
Kleine Erklärung: AutowiredAnnotationBeanPostProcessor ist beides ein MergedBeanDefinitionPostProcessor und ein InstantiationAwareBeanPostProcessor
Dieser Artikel stammt von der chinesischen PHP-Website, Spalte
Java-Tutorial, willkommen zum Lernen!
Das obige ist der detaillierte Inhalt vonWie Spring Objekte einfügt und wie der Bean-Erstellungsprozess analysiert wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Im Jahr 2023 ist die KI-Technologie zu einem heißen Thema geworden und hat enorme Auswirkungen auf verschiedene Branchen, insbesondere im Programmierbereich. Die Bedeutung der KI-Technologie wird den Menschen zunehmend bewusst, und die Spring-Community bildet da keine Ausnahme. Mit der kontinuierlichen Weiterentwicklung der GenAI-Technologie (General Artificial Intelligence) ist es entscheidend und dringend geworden, die Erstellung von Anwendungen mit KI-Funktionen zu vereinfachen. Vor diesem Hintergrund entstand „SpringAI“ mit dem Ziel, den Prozess der Entwicklung von KI-Funktionsanwendungen zu vereinfachen, ihn einfach und intuitiv zu gestalten und unnötige Komplexität zu vermeiden. Durch „SpringAI“ können Entwickler einfacher Anwendungen mit KI-Funktionen erstellen, wodurch diese einfacher zu verwenden und zu bedienen sind.

Als Branchenführer bietet Spring+AI durch seine leistungsstarke, flexible API und erweiterte Funktionen führende Lösungen für verschiedene Branchen. In diesem Thema werden wir uns mit den Anwendungsbeispielen von Spring+AI in verschiedenen Bereichen befassen. Jeder Fall wird zeigen, wie Spring+AI spezifische Anforderungen erfüllt, Ziele erreicht und diese LESSONSLEARNED auf ein breiteres Anwendungsspektrum ausdehnt. Ich hoffe, dieses Thema kann Sie dazu inspirieren, die unendlichen Möglichkeiten von Spring+AI tiefer zu verstehen und zu nutzen. Das Spring-Framework hat eine mehr als 20-jährige Geschichte im Bereich der Softwareentwicklung, und seit der Veröffentlichung der Spring Boot 1.0-Version sind 10 Jahre vergangen. Nun kann niemand diesen Frühling bestreiten

So implementieren Sie programmgesteuerte Spring-Transaktionen: 1. Verwenden Sie TransactionCallback und TransactionCallbackWithoutResult; 4. Verwenden Sie TransactionTemplate in Kombination mit @Transactional;

Java implementiert geplante Aufgaben In der mit Jdk gelieferten Bibliothek gibt es zwei Möglichkeiten, geplante Aufgaben zu implementieren: eine ist Timer und die andere ist ScheduledThreadPoolExecutor. Wenn Timer+TimerTask einen Timer erstellt, wird ein Thread erstellt, der zum Planen von TimerTask-Aufgaben verwendet werden kann. Der Timer verfügt über vier Konstruktionsmethoden. Sie können den Namen des Timer-Threads angeben und angeben, ob er als Daemon-Thread festgelegt werden soll. Der Standardname ist Timer-Nummer und der Standardname ist kein Daemon-Thread. Es gibt drei Hauptmethoden: cancel(): Aufgabenplanung beenden, alle derzeit geplanten Aufgaben abbrechen, laufende Aufgaben sind davon nicht betroffen. purge(): Aufgaben aus der Aufgabenwarteschlange entfernen

SpringBoot und SpringCloud sind beides Erweiterungen des Spring Framework, die Entwicklern dabei helfen, Microservice-Anwendungen schneller zu erstellen und bereitzustellen. Sie haben jedoch jeweils unterschiedliche Zwecke und Funktionen. SpringBoot ist ein Framework zum schnellen Erstellen von Java-Anwendungen, das es Entwicklern ermöglicht, Spring-basierte Anwendungen schneller zu erstellen und bereitzustellen. Es bietet eine einfache und leicht verständliche Möglichkeit, eigenständige, ausführbare Spring-Anwendungen zu erstellen

Mit der Aktualisierung und Iteration der Technologie begann Java5.0, Anmerkungen zu unterstützen. Als führendes Framework in Java hat Spring seit der Aktualisierung auf Version 2.5 langsam damit begonnen, die XML-Konfiguration aufzugeben, und es werden mehr Annotationen zur Steuerung des Spring-Frameworks verwendet.

So legen Sie die Transaktionsisolationsstufe in Spring fest: 1. Verwenden Sie die Annotation @Transactional. 3. Legen Sie sie in der Spring-Konfigurationsdatei fest. 4. Legen Sie sie in der Java-Konfigurationsklasse fest. Detaillierte Einführung: 1. Verwenden Sie die Annotation @Transactional, fügen Sie die Annotation @Transactional zu der Klasse oder Methode hinzu, die eine Transaktionsverwaltung erfordert, und legen Sie die Isolationsstufe im Attribut fest. 2. In der Spring-Konfigurationsdatei usw.

Als Java-Entwickler ist das Erlernen und Verwenden des Spring-Frameworks eine wesentliche Fähigkeit. Mit der Popularität von Cloud Computing und Microservices ist das Erlernen und Verwenden von Spring Cloud zu einer weiteren Fähigkeit geworden, die beherrscht werden muss. SpringCloud ist ein auf SpringBoot basierendes Entwicklungstoolset zum schnellen Aufbau verteilter Systeme. Es bietet Entwicklern eine Reihe von Komponenten, darunter Dienstregistrierung und -erkennung, Konfigurationscenter, Lastausgleich und Leistungsschalter usw., sodass Entwickler Mikrofunktionen erstellen können
