Raible's Wiki
Raible Designs AppFuseHomepage- Korean - Chinese - Italian - Japanese QuickStart Guide User Guide Tutorials Other ApplicationsStruts ResumeSecurity Example Struts Menu
Set your name in
UserPreferences
Referenced by
JSPWiki v2.2.33
Hide Menu |
This is version 15.
It is not the current version, and thus it cannot be edited. Teil II: Neue Manager erzeugen - Eine Anleitung für die Erzeugung von Business Facades, die mit der Datenbank Schicht (DAOs) kommuniziert und das Transaktionsmanagement verwaltet.
About this TutorialDieses Tutorial erklärt, wie mann eine Business Facade Klasse (Und den dazugehörigen JUnit Test) erzeugt, um mit der DAO Schicht zu kommunizieren, die wir in Teil I erzeugt haben.Im Kontext von AppFuse wird diese Klasse Manager Klasse genannt. Die hauptsächliche Aufgabe der Klasse besteht darin, die Verbindung zwischen WebLayer und DAO Schicht zu bilden. Sie unterstützt einen auch dabei, die Präsentationsschicht von der Datenbankschicht zu trennen (z.B. für Swing Anwendungen). Businesslogik der Anwendung sollte in die Manager gelegt werden.
Beginnen wir mit dem Erstellen eines neuen Manager Tests und der Manager in der Architektur von AppFuse. Inhaltsverzeichnis
Einen neuen Manager Test erstellen, um JUnit Tests auf dem Manager auszuführen [#1]Im Teil I haben wir ein Person Objekt und eine PersonDao erzeugt - also entwickeln wir weiter an dieser Einheit. Zuerst sollten wir einen JUnit Test für den PersonManager erzeugen. Man erzeugt den PersonManagerTest in dem Verzeichnis test/service/**/service. Wir wollen die selben grundlegenden Methoden (get, save, remove) testen, die auch in unserer DAO vorkommen.
Diese Klasse sollte von der Klasse BaseManagerTestCase abgeleitet werden, die bereits im service Package vorliegt. Diese Klasse (BaseManagerTestCase) stellt ähnliche Funktionen bereit wie die Klasse BaseDaoTestCase.
Der untenstehende Code ist das einzige, was man für einen einfachen JUnit Test für den Manager benötigt. Anders als der DaoTest nutzt dieser Test jMock, um den Manager von seinen Abhängigkeiten zu befreien und ihn so zu einem echten "Unit" Test zu machen. Dies kann sehr hilfreich sein, da es einem erlaubt, Business Logik zu testen, ohne sich Sorgen um andere Abhängigkeiten zu machen. Der untenstehende Code erzeugt für die Tests einfach den Manager und seine Abhängigkeiten (als Mocks).
Nachdem wir jetzt das Gerüst für diese Klasse erzeugt haben, müssen wir ihn noch mit Inhalt befüllen: Die Testmethoden, die sicherstellen, dass alles funktioniert. Hier ist ein Ausschnitt aus dem DAO Tutorial, um einfacher zu verstehen, was wir gleich machen werden.
Jetzt fügt man folgende Methoden zur Datei PersonManagerTest.java hinzu:
Zur Zeit wird diese Klasse noch nicht komilieren, weil wir das Interface PersonManager noch nicht erzeugt haben.
Einen neuen Manager erstellen, um mit der DAO Schicht zu kommunizieren [#2]Zu aller erst erzeugt amn ein Interface mit dem Namen PersonManager.java im Verzeichnis src/service/**/service und definiert die grundlegenden CRUD Methoden für alle implementierenden Klassen. Ich habe die JavaDocs in den Klassen entfernt, um die Darstellung zu verbessern. Die setPersonDao() Methode wird in den meisten Fällen nicht genutzt. - Sie existiert nur, damit der PersonManagerTest die DAO über das Interface setzen kann..
Jetzt erzeugt wir eine PersonManagerImpl Klasse, die die Methoden des PersonManager Interfaces implementiert. Um dies zu tun, erzeugt man eine neue Klasse im Verzeichnis src/service/**/service/impl und nennt diese PersonManagerImpl.java. Diese sollte von der Klasse BaseManager abgeleitet sein und das Interface PersonManager implementieren.
Eine Sache, auf die hingewiesen werden muss, ist die setPersonDao() Methode. Diese Methode wird von Spring genutzt, um die PersonDao an diesen Manager zu binden. Dies wird in der Datei applicationContext-service.xml konfiguriert. Zu diesem Punkt werden wir in Schritt 3[3] kommen. Jetzt sollte es möglich sein, alles mit der Hilfe von "ant compile-service" zu kompilieren. Jetzt muss man die Konfigurationsdatei von Spring editieren, damit unsere Service Schicht diesen neuen Manager kennt. Spring für diesen Manager und die Transaktionen konfigurieren [#3]Um unser PersonManager Interface und die dazugehörige Implementierung in Spring bekanntzumachen, öffnet man die Datei src/service/**/service/applicationContext-service.xml. In dieser Datei kann man eine auskommentierte Definition für die "personManager" Bean finden. Man entfernt diesen Kommentar, oder fügt folgende Zeilen am Ende der Datei ein.
Das "parent" Attribut bezieht sich auf eine Beandefinition für eine TransactionProxyFactoryBean , die alle grundlegenden Transaktionsattribute bereits gesetzt hat. Den Manager Test ausführen [#4]Jetzt speichert man alle Tests und versucht, ant test-service -Dtestcase=PersonManager auszuführen. Yeah Baby, Yeah:
BUILD SUCCESSFUL Die Dateien, die bis zu diesem Punkt geändert oder erstellt wurden, sind zum Download verfügbar. Next Up: Teil III: Actions und JSPs erstellen - Eine Anleitung zur Erstellung von Actions und JSPs in der Architektur von AppFuse.
|