Detaillierte Erklärung von Spring IOC und DI
Was ist Frühling?
Frühling ist ein Framework mit IoC und AOP als Kern.
IoC (Inversion of Control, Inversion of Control) ist die Grundlage des Frühlings.
IoC bedeutet einfach, dass der vorherige Programmierer beim Erstellen eines Objekts die neue Konstruktormethode aufgerufen hat, anstatt es Spring zu überlassen, das Objekt zu erstellen.
DI (Dependency Inject, Abhängigkeitsinjektion) hat die gleiche Bedeutung wie IoC, aber diese beiden Begriffe beschreiben dasselbe Konzept aus zwei Perspektiven.
Einfach ausgedrückt ist DI das Attribut des Objekts. Die relevanten Werte wurden in das Objekt eingefügt und können direkt verwendet werden.
IoC-Inversion of Control
Nachdem Sie jede Objektklasse gekapselt haben, verknüpfen Sie diese Objektklassen über den IoC-Container. Auf diese Weise werden Objekte über den IoC-Container verbunden, und es besteht keine direkte Verbindung zwischen Objekten.
Bevor die Anwendung den IoC-Container einführt, hängt Objekt A von Objekt B ab. Wenn Objekt A dann instanziiert wird oder bis zu einem bestimmten Punkt ausgeführt wird, muss es Objekt B aktiv erstellen oder verwenden. Erstelltes Objekt B: Unabhängig davon, ob das erstellte Objekt B erstellt oder verwendet wird, liegt die Kontrolle bei der Anwendung selbst.
Wenn die Anwendung den IoC-Container einführt, geht die direkte Verbindung zwischen Objekt A und Objekt B verloren. Wenn also Objekt A instanziiert und ausgeführt wird, wird der IoC-Container aktiv Erstellen Sie ein Objekt B und injizieren Sie es (d. h. Abhängigkeitsinjektion) an der Stelle, an der Objekt A es benötigt. Dadurch ändert sich der Prozess, bei dem Objekt A von Objekt B abhängig wird, von aktivem Verhalten zu passivem Verhalten, das heißt, die Erstellung des Objekts wird zur Verarbeitung an den IoC-Container übergeben und die Kontrollrechte werden umgekehrt sogenannte Umkehrung der Kontrolle.
DI-Dependency Injection
Der IoC-Container injiziert während der Laufzeit dynamisch bestimmte Abhängigkeiten in Objekte. Fügen Sie beispielsweise Objekt B einer Mitgliedsvariablen von Objekt A hinzu (weisen Sie es zu).
Tatsächlich sind Dependency Injection (DI) und Inversion of Control (IoC) unterschiedliche Beschreibungen derselben Sache. In einem bestimmten Aspekt beschreiben sie sie aus unterschiedlichen Perspektiven. Die Abhängigkeitsinjektion wird aus der Perspektive der Anwendung beschrieben, d. h. die Anwendung ist darauf angewiesen, dass der Container die benötigten externen Ressourcen erstellt und einspeist, während die Umkehrung der Kontrolle aus der Perspektive des Containers beschrieben wird, d. h. der Container steuert die Die Anwendung und der Container umgekehrt. Die Anwendung injiziert externe Ressourcen, die von der Anwendung benötigt werden. Die hier genannten externen Ressourcen können externe Instanzobjekte, externe Dateiobjekte usw. sein.
IoC- und DI-Implementierung
(1) Injektion der Property-Setter-Methode: Bezieht sich auf den IoC-Container, der die Setter-Methode verwendet, um abhängige Instanzen zu injizieren. Nach der Instanziierung einer Bean durch Aufrufen des Parameterlosen Konstruktors oder der Parameterlosen statischen Factory-Methode und Aufrufen der Setter-Methode der Bean kann die Abhängigkeitsinjektion basierend auf der Setter-Methode implementiert werden. Diese Methode ist einfach, intuitiv und leicht zu verstehen, sodass die Einstellungsinjektion von Spring weit verbreitet ist.
package com.ssm.entry; public class UserServiceImpl implements UserService { private UserDao userDao; // setter()实现依赖注入 public void setUserDao(UserDao userDao){ this.userDao = userDao; } public void login() { this.userDao.login(); System.out.println("UserService login"); } }
(2) Konstruktormethodeninjektion: Bezieht sich auf den IoC-Container, der die Konstruktormethode verwendet, um abhängige Instanzen zu injizieren. Die auf dem Konstruktor basierende Abhängigkeitsinjektion wird durch Aufrufen des Konstruktors mit Parametern implementiert, wobei jeder Parameter eine Abhängigkeit darstellt.
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd"> <!-- 将指定类配置给Spring,让Spring创建其对象的实例 控制反转 --> <bean id="UserDao" class="com.ssm.entry.UserDaoImpl"></bean> <!-- 添加一个id为userService的Bean 依赖注入--> <bean id="UserService" class="com.ssm.entry.UserServiceImpl"> <!-- 将name为UserDao的Bean注入UserService实例中 --> <property name="UserDao" ref="UserDao"/> </bean> </beans>
IoC-Test
package com.ssm.entry; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class IoC { public static void main(String[] args) { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); UserDao userDao = (UserDao)applicationContext.getBean("UserDao"); userDao.login(); } }
DI-Test
package com.ssm.entry; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class DI { public static void main(String[] args) { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); UserService userService = (UserService)applicationContext.getBean("UserService"); userService.login(); } }
Empfohlenes Tutorial: „Java-Tutorial“
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung von Spring IOC und DI. 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;

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.

In der Java-Sprache sind IoC (Inversion of Control) und AOP (AspectOriented Programming) zwei sehr wichtige Programmierideen und -technologien. Ihre Anwendung kann die Wartbarkeit, Skalierbarkeit und Wiederverwendbarkeit von Code erheblich verbessern und so Entwicklern dabei helfen, Softwaresysteme effizienter zu entwickeln und zu warten. IoC ist ein objektorientiertes Entwurfsmuster, auch bekannt als „Dependency Injection“

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
