70. Springs IoC Inversion of Control

IOC (Inversion of Control) : Inversion of Control ist eine Theorie und Leitideologie. Unterweisen Sie Entwickler in der Verwendung von Objekten und der Verwaltung von Objekten. Die Erstellung von Objekten, die Zuweisung von Eigenschaften und der Deklarationszyklus von Objekten werden alle von Containern außerhalb des Codes verwaltet.

Inhalt

IOC verstehen

Technische Umsetzung des IOC

Spring-Konfigurationsdatei

Eigenschaften von Objekten, die vom Spring-Container erstellt wurden

Verwenden Sie IOC, um den Benutzerregistrierungsvorgang zu simulieren

IOC-Zusammenfassung



IOC verstehen

  • Steuerung : Objekterstellung, Eigenschaftszuweisung, Verwaltung des Objektdeklarationszyklus
  • Inversion : Verschiebt die Befugnis des Entwicklers, das Objekt zu verwalten, auf die Containerimplementierung außerhalb des Codes. Die Objektverwaltung erfolgt durch den Container.
  • Forward : Der Entwickler verwendet den neuen Konstruktor, um Objekte im Code zu erstellen. Entwickler beherrschen die Erstellung von Objekten, die Zuweisung von Eigenschaften und den gesamten Prozess der Objekterstellung und -zerstörung. Der Entwickler hat die volle Kontrolle über das Objekt.

 Zusammenfassung: Über den Container können Sie die Objekte im Container verwenden (der Container hat das Objekt erstellt, das Objektattribut wird zugewiesen und das Objekt wird zusammengesetzt).

             Spring ist ein Container, der Objekte verwalten, Objekte erstellen und Eigenschaften Werte zuweisen kann

Technische Umsetzung des IOC

(Dependency Injection) DI (Dependency Injection) : Die Abkürzung lautet DI, was eine technische Umsetzung von IoC ist. Das Programm muss nur den Namen des zu verwendenden Objekts angeben.Wie das Objekt erstellt wird, wie es aus dem Container gefunden wird und wie es von demContainer selbst erhalten wird, wird durch den Container selbst implementiert.

  • Abhängigkeit:   Beispielsweise verwendet die Klasse ClassA die Eigenschaften oder Methoden von ClassB, die als ClassA bezeichnet wird und von ClassB abhängt.

z.B:

public class ClassB{
    
    public void createOrder(){}
}

public class ClassA{
    //属性
    private ClassB  b = new ClassB();
    
    public void buy(){
        b.createOrder();
    }
}

执行ClassA的buy()
ClassA a  = new ClassA();
a.buy();

        Der Spring-Container ist eine Super-Factory, die für die Erstellung und Verwaltung aller Java-Objekte, die Beans genannt werden, verantwortlich ist. Der Spring-Container verwaltet die Abhängigkeiten zwischen Beans im Container, und Spring verwendet „Dependency Injection“, um die Abhängigkeiten zwischen Beans zu verwalten. Verwenden Sie IoC, um eine Entkopplung und Entkopplung zwischen Objekten zu erreichen.

Spring-Konfigurationsdatei

<?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.xsd">

</beans>

Spring-Standard-Konfigurationsdatei:

  1. Das Root-Tag ist Beans
  2. Nach den Beans folgt die Beschreibung der Beschränkungsdatei
  3. Inside Beans sind Bean-Deklarationen
  4. Was ist eine Bean: Eine Bean ist ein Java-Objekt, ein Java-Objekt, das vom Spring-Container verwaltet wird und Bean genannt wird

Eigenschaften von Objekten, die vom Spring-Container erstellt wurden

  • Container-Objekt (ApplicationContext)-Schnittstelle Rufen Sie andere Java-Objekte ab, die über das ApplicationContext-Objekt verwendet werden sollen, und führen Sie getBean("id of <bean>") aus.
  • Standardmäßig ruft spring den parameterlosen Konstruktor der Klasse auf, um ein Objekt zu erstellen
  • Spring liest die Konfigurationsdatei, erstellt alle Java-Objekte auf einmal und fügt sie in die Map ein

Verwenden Sie IOC, um den Benutzerregistrierungsvorgang zu simulieren

Anforderung: Benutzerregistrierung simulieren

analysieren:

  • Es ist notwendig, eine Methode insertUser(SysUser user) in der Schnittstelle dao interface (UserDao) zu definieren, die Implementierungsklasse MySqlUserDao der Schnittstelle zu definieren, und die Methode insertUser() muss keine Daten verarbeiten, und die Ausgabe „used dao to den Einfügevorgang ausführen".

  • Eine Dienstschnittstelle (UserService) muss definiert werden, und die Implementierungsklasse UserServiceImpl der Schnittstelle wird definiert. Es gibt ein Attribut vom Typ UserDao in der Implementierungsklasse des Dienstes. In der Dienstklasse gibt es eine Methode addUser(SysUser user).

  • Die Operation ist addUser() { userDao.insertUser() } in der Dienstklasse, um die Registrierung abzuschließen.

  • Definieren Sie eine Entitätsklasse SysUser, die die Daten des Benutzers darstellt.

        Spring verwaltet mehrere Konfigurationsdateien: Die am häufigsten verwendeten Konfigurationsdateien sind diejenigen, die Beziehungen enthalten. Es gibt eine allgemeine Datei im Projekt, die ein Import-Tag hat, das andere Konfigurationsdateien enthält.

Grammatik:

总的文件(xml)
<import resource="其他的文件的路径1"/>
<import resource="其他的文件的路径2"/>

关键字“classpath:”:表示类路径, 也就是类文件(class文件)所在的目录。 spring到类路径中加载文件
                   什么时候使用classpath: 在一个文件中要使用其他的文件, 需要使用classpath


IOC-Zusammenfassung

IOC: Zum   Verwalten von Objekten, Platzieren von Objekten in Containern, Erstellen, Zuweisen und Verwalten von Abhängigkeiten.

        Die Entkopplung wird durch die Verwaltung von Objekten erreicht. IoC löst die Kopplungsbeziehung zwischen Geschäftslogikobjekten, also die Entkopplung zwischen Service und Dao.

Welche Objekte eignen sich für die Verwaltung als Container?

  • Dienstobjekt, Dao-Objekt.
  • Werkzeugklassenobjekt.

Gegenstände, die nicht für die Übergabe an den Frühling geeignet sind?

  • Entitätsklasse.
  • Objekte im Web wie Servlet, Listener, Filter etc. Sie werden von Tomcat erstellt und verwaltet.


Ich denke du magst

Origin blog.csdn.net/m0_54925305/article/details/123135171
Empfohlen
Rangfolge