Heim  >  Artikel  >  Java  >  Detaillierte Erläuterung der Spring IoC- und AOP-Prinzipien

Detaillierte Erläuterung der Spring IoC- und AOP-Prinzipien

Guanhui
GuanhuiOriginal
2020-06-23 09:23:177574Durchsuche

Detaillierte Erläuterung der Spring IoC- und AOP-Prinzipien

Detaillierte Erläuterung der SpringIOC- und AOP-Prinzipien

IoC (Inversion of Control)

( 1) IoC (Inversion of Control) bezieht sich auf die Beziehung zwischen Container-gesteuerten Programmobjekten und nicht auf die direkte Steuerung durch Programmcode in herkömmlichen Implementierungen. Die Steuerung wird vom Anwendungscode an den externen Container übertragen. Die Übertragung der Steuerung wird als Inversion bezeichnet. Für Spring steuert Spring den Lebenszyklus von Objekten und die Beziehung zwischen Objekten hat einen anderen Namen – „Dependency Injection“. Wie der Name schon sagt, bedeutet die sogenannte Abhängigkeitsinjektion, dass die Abhängigkeiten zwischen Komponenten vom Container zur Laufzeit ermittelt werden, das heißt, der Container injiziert bestimmte Abhängigkeiten dynamisch in die Komponenten.

(2) So wie Spring funktioniert, werden alle Klassen im Spring-Container registriert, um Spring mitzuteilen, was es ist und was Sie brauchen, und Spring führt es dann aus, wenn das System dies zulässt Gib dir, was du willst, und gib dir auch andere Dinge, die dich brauchen. Die Erstellung und Zerstörung aller Klassen wird vom Frühling gesteuert, was bedeutet, dass der Lebenszyklus des Objekts nicht mehr vom Objekt gesteuert wird, das darauf verweist, sondern vom Frühling. Früher wurden damit andere Objekte für ein bestimmtes Objekt gesteuert, jetzt werden jedoch alle Objekte durch Federn gesteuert, weshalb dies als Umkehrung der Steuerung bezeichnet wird.

(3) Versorgen Sie ein Objekt während des Systembetriebs dynamisch mit anderen benötigten Objekten.

(4) Die Idee der Abhängigkeitsinjektion wird durch den Reflexionsmechanismus verwirklicht. Beim Instanziieren einer Klasse wird die Set-Methode in der Klasse durch Reflexion aufgerufen, um die zuvor in der HashMap gespeicherten Klassenattribute einzufügen die Klasse. Alles in allem erstellt der Aufrufer bei der herkömmlichen Methode der Objekterstellung normalerweise eine Instanz des Aufgerufenen. In Spring wird die Arbeit zum Erstellen des Aufgerufenen von Spring abgeschlossen und dann wird der Aufrufer injiziert, was die sogenannte Abhängigkeit darstellt Injektion oder Kontrollreflexion. Es gibt zwei Injektionsmethoden: Abhängigkeitsinjektion und Einstellungsinjektion. Die Vorteile von IoC: Reduzieren Sie die Kopplung zwischen Komponenten, reduzieren Sie die Komplexität des Austauschs zwischen Geschäftsobjekten und ermöglichen Sie eine flexible Verwaltung von Objekten.

AOP (Aspektorientierte Programmierung)

(1) AOP-aspektorientierte Programmierung basiert auf IoC und ist eine nützliche Ergänzung zu OOP; >(2) verwendet eine Technologie namens „Cross-Cutting“, um das Innere des gekapselten Objekts zu zerlegen und die öffentlichen Verhaltensweisen, die sich auf mehrere Klassen auswirken, in einem wiederverwendbaren Modul zu kapseln und es „Aspekte“ zu nennen. Der sogenannte „Aspekt“ besteht, vereinfacht ausgedrückt, darin, die Logik oder Verantwortlichkeiten zu kapseln, die nichts mit dem Geschäft zu tun haben, sondern von den Geschäftsmodulen gemeinsam aufgerufen werden, wie z. B. die Protokollierung, um die Duplizierung von Code im System zu reduzieren , reduzieren die Kopplung zwischen Modulen und sind förderlich für zukünftige Bedienbarkeit und Wartbarkeit.

(3). AOP stellt eine horizontale Beziehung dar und vergleicht das „Objekt“ mit einem Hohlzylinder, der die Eigenschaften und das Verhalten des Objekts kapselt Geschäftslogik gezielt bereitzustellen. Und die Schnittabschnitte sind die sogenannten „Aspekte“. Dann wurden diese ausgeschnittenen Abschnitte mit unheimlichem Geschick wiederhergestellt, ohne Spuren zu hinterlassen, aber den Effekt zu vervollständigen.

(4) Die Technologie zur Implementierung von AOP ist hauptsächlich in zwei Kategorien unterteilt: Die erste besteht darin, die Nachricht durch das Abfangen der Nachricht zu dekorieren und die Ausführung des ursprünglichen Objektverhaltens zu ersetzen Verwenden Sie statisches Weben, um eine bestimmte Syntax zum Erstellen von „Aspekten“ einzuführen, sodass der Compiler während der Kompilierung Code einbinden kann, der sich auf „Aspekte“ bezieht.

(5). Spring implementiert AOP: JDK Dynamic Proxy und CGLIB Proxy JDK Dynamic Proxy: Sein Proxy-Objekt muss die Implementierung einer bestimmten Schnittstelle sein, was durch die Erstellung einer Implementierungsklasse der Schnittstelle zur Laufzeit erreicht wird Proxy des Zielobjekts; seine beiden Kernklassen sind InvocationHandler und Proxy. CGLIB-Proxy: Das Implementierungsprinzip ähnelt dem dynamischen JDK-Proxy, mit der Ausnahme, dass das während der Laufzeit generierte Proxy-Objekt eine für die Zielklasse erweiterte Unterklasse ist. CGLIB ist ein effizientes Codegenerierungspaket, das auf ASM (Open-Source-Java-Bytecode-Bearbeitungsklassenbibliothek) basiert, um Bytecode zu betreiben. Seine Leistung ist besser als die von JDK . Mit AspectJ injizierte Aspekte und @AspectJ-Annotations-gesteuerte Aspekte werden tatsächlich durch dynamische Proxys auf der untersten Ebene implementiert.

(6). AOP-Nutzungsszenarien:

    Authentifizierungsberechtigungsprüfung
  • Caching
  • Kontextübergabe Inhaltsübergabe
  • Fehlerbehandlung Fehlerbehandlung
  • Lazy Loading
  • Debuggen 
  • Protokollierung, Ablaufverfolgung, Profilerstellung und Überwachungsprüfung
  • Persistenz               

  • Ressourcenpooling  Ressourcenpool     

  • Synchronisation  

  • Transaktionen Transaktion Management

Darüber hinaus sind die Implementierung von Filter und die Implementierung von struts2 interceptor beide Verkörperungen von AOP-Ideen.

Empfohlenes Tutorial: „

Java-Tutorial

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Spring IoC- und AOP-Prinzipien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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