Heim > Java > javaLernprogramm > So simulieren und implementieren Sie die Java Spring-Abhängigkeitsinjektion in ABAP (Bild und Text)

So simulieren und implementieren Sie die Java Spring-Abhängigkeitsinjektion in ABAP (Bild und Text)

不言
Freigeben: 2018-10-22 16:09:11
nach vorne
2421 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit der Simulation und Implementierung der Java Spring-Abhängigkeitsinjektion (Bilder und Texte). Ich hoffe, dass er für Sie hilfreich ist. .

Abhängigkeitsinjektion – Abhängigkeitsinjektion wird im Java Spring-Framework häufig verwendet. Durch die Abhängigkeitsinjektion müssen wir abhängige Ressourcen nicht mühsam im Anwendungscode initialisieren, was sehr praktisch ist.

Kann ABAP also auch die Abhängigkeitsinjektion auf Sprachebene unterstützen und den Komfort dieser Designidee genießen? Lass es uns versuchen.

Eine Szene zum Ausprobieren

Im wirklichen Leben verfügt jedes Licht über eine Schaltersteuerung. Drücken Sie den Schalter und das Licht wird eingeschaltet; drücken Sie ihn erneut und das Licht erlischt.

Sehen wir uns nicht die herkömmliche Implementierung mit Abhängigkeitsinjektion an:

Entwerfen Sie eine ABAP-Schnittstelle ZIF_SWITCHABLE und stellen Sie zwei Methoden bereit, die jeweils dem Ein- und Ausschalten entsprechen.

So simulieren und implementieren Sie die Java Spring-Abhängigkeitsinjektion in ABAP (Bild und Text)

Natürlich habe ich eine ABAP-Klasse ZCL_LAMP, die die obige Schnittstelle implementiert. Jede Instanz von ZCL_LAMP ist eine Lampe.

CLASS ZCL_LAMP IMPLEMENTATION.
method ZIF_SWITCHABLE~OFF.
WRITE: / 'lamp off'.
endmethod.
method ZIF_SWITCHABLE~ON.
WRITE: / 'lamp on'.
endmethod.
ENDCLASS.
Nach dem Login kopieren

Entwerfen Sie eine Switch-Klasse. Diese Klasse verfügt über eine Mitgliedsvariable mo_switchable, die auf die ZIF_SWITCHABLE-Schnittstelle verweist.

So simulieren und implementieren Sie die Java Spring-Abhängigkeitsinjektion in ABAP (Bild und Text)

Der Schalter verfügt über eine „Drück“-Methode. Wenn nach dem Drücken der aktuelle Status „Ein“ ist, rufen Sie die Methode „Aus“ des Mitglieds „mo_switchable“ auf, um es auszuschalten, und setzen Sie den Status des Schalters auf „Aus“. umgekehrt.

METHOD push.
IF isswitchon = abap_true.
mo_switchable->off( ).
isswitchon = abap_false.
ELSE.
mo_switchable->on( ).
isswitchon = abap_true.
ENDIF.
ENDMETHOD.
Nach dem Login kopieren

stellt eine Setter-Methode bereit, um die eingehende Variable vom Typ ZIF_SWITCHABLE in die Mitgliedsvariable mo_switchable einzufügen.

method SET_SWITCHABLE.

mo_switchable = io_switchable.

endmethod.
Nach dem Login kopieren

Ich habe die beiden Klassen, die ich bisher erstellt habe: ZCL_LAMP und ZCL_SWITCH, in das Paket $ZDEV_INVERSION eingefügt.

So simulieren und implementieren Sie die Java Spring-Abhängigkeitsinjektion in ABAP (Bild und Text)

Verbrauchscode des ABAP Summer Frameworks

Wie aus dem folgenden Code ersichtlich ist, ZCL_SWITCH und ZCL_LAMP erzeugt eine starke Abhängigkeit. Diese Abhängigkeit wird vom Anwendungsentwickler manuell durch Aufrufen der Set-Methode eingefügt.

So simulieren und implementieren Sie die Java Spring-Abhängigkeitsinjektion in ABAP (Bild und Text)

Zusammenfassend lässt sich sagen, dass es einige Aspekte des Codes in der obigen Abbildung gibt, die in Java Spring durch die Idee der Abhängigkeit vollständig vermieden werden können Injektion.

Zeile 8: Erstellen Sie manuell eine Instanz von ZCL_LAMP (Licht).

Zeile 9: Erstellen Sie manuell eine Instanz von ZCL_SWITCH (Schalter).

Zeile 11: Rufen Sie die Set-Methode auf, um die Abhängigkeiten von Lichtern und Schaltern manuell einzufügen.

Verwendung des ABAP Summer-Frameworks zur Implementierung der Abhängigkeitsinjektion

Ich habe ABAP verwendet, um das Java Spring-Abhängigkeitsinjektions-Framework zu simulieren, und einen Prototyp namens ABAP Summer entwickelt, der kompatibel ist mit Java Spring-Echos.

Überlegen Sie sich zunächst, wie Sie dieses einfache Beispiel mit Java Spring umsetzen können. Ein Java-Programmierer kann problemlos den folgenden Code schreiben. Mit der @Inject-Annotation von Spring müssen wir ISwitchable nicht manuell instanziieren und die Set-Methode aufrufen, um Abhängigkeiten herzustellen. Bei uns wird alles durch das Spring-Framework umgesetzt.

So simulieren und implementieren Sie die Java Spring-Abhängigkeitsinjektion in ABAP (Bild und Text)

Wie kann man nun ABAP verwenden, um diese „Magie“ zu erreichen?

1. Fügen Sie die Annotation @Inject im Beschreibungsfeld der Mitgliedsvariablen mo_switchable der ZCL_SWITCH-Klasse hinzu. Die Absicht besteht darin, dem ABAP Summer-Framework mitzuteilen, dass ich hoffe, dass das mo_switchable-Mitglied automatisch mit einem korrekten Wert injiziert werden kann Abhängigkeit. Welche Art von Abhängigkeit ist richtig? Woher weiß das Summer-Framework, wie es einspritzt? Bitte lesen Sie weiter.

So simulieren und implementieren Sie die Java Spring-Abhängigkeitsinjektion in ABAP (Bild und Text)

Hinweis: Die ABAP-Sprache unterscheidet sich von Java und kann keine Annotationen auf Sprachebene unterstützen, daher ist hier das im Beschreibungsfeld gepflegte @Inject vorhanden nur eine Simulation.

2. Schauen wir uns zunächst den ABAP-Verbrauchscode an, nachdem er die Abhängigkeitsinjektion verwendet hat. Fühlt er sich plötzlich viel sauberer an?

data(summer) = zcl_summer=>get_instance( ).
data(lo_switch) = cast zcl_switch( summer->get_bean( EXPORTING iv_bean_name = 'ZCL_SWITCH' ) ).
lo_switch->push( ).
lo_switch->push( ).
Nach dem Login kopieren

Die folgende Abbildung ist ein Vergleich zweier Sätze von Verbrauchercodes, die auf der konventionellen ABAP-Implementierung und der Idee der ABAP-Abhängigkeitsinjektion basieren. Es ist deutlich zu erkennen, dass nach der Einführung der ABAP-Abhängigkeitsinjektion

So simulieren und implementieren Sie die Java Spring-Abhängigkeitsinjektion in ABAP (Bild und Text)

Die drei zuvor genannten manuellen Eingriffe entfallen komplett. Die Mitgliedsvariable mo_switchable in der von der GET_BEAN-Methode zurückgegebenen Switch-Instanz enthält die automatisch eingefügte Instanz der ZCL_LAMP-Klasse.

Zeile 8: Erstellen Sie manuell eine Instanz von ZCL_LAMP (Licht).

Zeile 9: Erstellen Sie manuell eine Instanz von ZCL_SWITCH (Schalter).

Zeile 11: Rufen Sie die Set-Methode auf, um die Abhängigkeiten von Lichtern und Schaltern manuell einzufügen.

Lassen Sie uns noch einmal einen Blick auf den authentischen Verbrauchscode in Java Spring werfen, um sicherzustellen, dass der von uns erfundene ABAP Summer tatsächlich die ursprüngliche Abhängigkeitsinjektion ist.

So simulieren und implementieren Sie die Java Spring-Abhängigkeitsinjektion in ABAP (Bild und Text)

Das Implementierungsprinzip der ABAP Summer-Abhängigkeitsinjektion

Die Implementierung dieses ABAP-Abhängigkeitsinjektions-Frameworks ist in meinem On github:

https://github.com/i042416/je...

So simulieren und implementieren Sie die Java Spring-Abhängigkeitsinjektion in ABAP (Bild und Text)

Über Java Spring Dependency Injektion Erklären Sie, es gibt viele wunderbar geschriebene Bücher im Internet.

So simulieren und implementieren Sie die Java Spring-Abhängigkeitsinjektion in ABAP (Bild und Text)

Das Folgende ist die Kernimplementierung der ABAP Summer-Abhängigkeitsinjektion und bezieht sich auf die Erklärung von Java Spring im obigen Buch.

So simulieren und implementieren Sie die Java Spring-Abhängigkeitsinjektion in ABAP (Bild und Text)

Das obige ist der detaillierte Inhalt vonSo simulieren und implementieren Sie die Java Spring-Abhängigkeitsinjektion in ABAP (Bild und Text). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage