Hallo, ich habe wenig Erfahrung mit der Projektarchitektur von JavaEE Projekten und deshalb möchte ich euch fragen, ob der gewählte Weg von mir ok ist.
Ich erstelle für jede Anforderung, bspw. Datenbank, zwei Klassenbibliotheken. Die eine enthält die Schnittstellen und die andere die Implementierungen. Dadurch lässt sich die Implementierung jeder Zeit austauschen, ohne den Programmcode anderer Module anzupassen. Die Klassen zu den Schnittstellen werden mittels CDI erzeugt (inject). Es gibt aber auch Klassen, deren Erzeugung nicht über CDI stattfinden soll, dafür verwende ich Fabriken, die mit Hilfe von CDI injiziert werden.
Beispiel: database-interface.jar und database-implementation.jar
Die Schnittstellen in database-interface.jar sind:
Product, ProductFactory, ProductFacade.
ProductFacade wird injiziert.
Product wird über die ProductFactory erzeugt, da es mehrere Implementierungen gäbe könnte (UserDefault, UserDefaultMock, UserClient, UserJPA usw...).
Die ProductFactory wird injeziert. Von ihr gibt es verschiedene Implementierungen einmal für UserDefaultFactory, UserMockFactory ... . Die Factory, die verwendet wird, besitzt kein @alternative (oder alternative Eintrag in beans.xml).
Die Erzeugung von Product kann auch mit CDI über InitialContext.lookup geschehen. Ich finde, dass es aber unschön ist.
Ist diese Vorgehensweise gut?
Die Erzeugung von Product kann auch mit CDI über InitialContext.lookup geschehen. Ich finde, dass es aber unschön ist.
Ist diese Vorgehensweise gut?
Ich erstelle für jede Anforderung, bspw. Datenbank, zwei Klassenbibliotheken. Die eine enthält die Schnittstellen und die andere die Implementierungen. Dadurch lässt sich die Implementierung jeder Zeit austauschen, ohne den Programmcode anderer Module anzupassen. Die Klassen zu den Schnittstellen werden mittels CDI erzeugt (inject). Es gibt aber auch Klassen, deren Erzeugung nicht über CDI stattfinden soll, dafür verwende ich Fabriken, die mit Hilfe von CDI injiziert werden.
Beispiel: database-interface.jar und database-implementation.jar
Die Schnittstellen in database-interface.jar sind:
Product, ProductFactory, ProductFacade.
ProductFacade wird injiziert.
Product wird über die ProductFactory erzeugt, da es mehrere Implementierungen gäbe könnte (UserDefault, UserDefaultMock, UserClient, UserJPA usw...).
Die ProductFactory wird injeziert. Von ihr gibt es verschiedene Implementierungen einmal für UserDefaultFactory, UserMockFactory ... . Die Factory, die verwendet wird, besitzt kein @alternative (oder alternative Eintrag in beans.xml).
Die Erzeugung von Product kann auch mit CDI über InitialContext.lookup geschehen. Ich finde, dass es aber unschön ist.
Ist diese Vorgehensweise gut?
Die Erzeugung von Product kann auch mit CDI über InitialContext.lookup geschehen. Ich finde, dass es aber unschön ist.
Ist diese Vorgehensweise gut?
Zuletzt bearbeitet: