Dies ist meine erste Erfahrung in der Entwicklung von Anwendungen, die auf einer Java-EE-Architektur basieren und ich verwende
Ich möchte Sie bitte zu einem Thema fragen, mit dem ich ein wenig verwirrt bin. Ich möchte meine JSF-verwaltete Bean deklarieren, aber es gibt viele Lösungen, um mit dieser Einschränkung umzugehen:
Meine Frage ist: Was ist der Unterschied zwischen diesen drei Lösungen? und welche Änderungen sollte ich an meiner ApplicationConfig.java oder / und web.xml vornehmen? Und bezüglich Spring, sollte ich einige Listener in meine web.xml?!?
einfügenIch habe wirklich versucht, viele Tutorials und Beispiele zu lesen, aber jedes Mal, wenn ich mich blockiert finde!
Wenn Sie Spring und JSF integrieren, können Sie in beiden Technologien wirklich kein Anfänger sein, weil sie nicht gut zusammenspielen. Mein erster und bester Rat zu Ihnen ist, einige Bücher auf JSF und Frühling zu erhalten und wirklich beide separat zu verstehen, bevor Sie versuchen, sie zu integrieren.
JSF ist ein komponentenbasiertes Webframework mit Schwerpunkt auf MVC. Spring ist ein Dependency-Injection- und Inversion-Control-Framework, das nicht ausschließlich für Webanwendungen gilt.
Wenn Sie nicht verstehen, sind diese drei Begriffe:
Komponentenbasiertes Web-Framework
Abhängigkeitsinjektion
Umkehrung der Kontrolle
Dann mein Vorschlag ist, dass Sie einfach aufhören, was Sie tun und sofort anfangen zu lesen.
Das Hauptproblem bei der Integration dieser beiden Punkte besteht darin, dass sich die Zuständigkeiten zwischen den beiden zu überwindenden Rahmenbedingungen teilweise überschneiden. JSF als eigenständiges Framework behält den Umfang seiner eigenen verwalteten Beans bei, ohne dass ein separates DI-Framework benötigt wird. Bei der Einführung von Spring wird es natürlich Konflikte geben. Spring verwaltet seine eigenen Beans mit Ausnahme von JSF. Um diese ManagedBeans zu referenzieren und Geschäftsobjekte oder DAO ordnungsgemäß in diese zu integrieren, müssen die JSF ManagedBeans zu Spring Controllern werden.
Sie können eine JSF ManagedBean mit der Annotation @Controller
deklarieren. Spring 3 ist intelligent genug, um zu erkennen, dass es sich um eine von JSF verwaltete Bean handelt und der Bean-Name wie auch immer der Name für ManagedBean ist.
Nun, da dies erledigt ist, ist das nächste Problem der lästige EL-Resolver, der mit Ihrer JSF-Implementierung geliefert wurde. Der EL-Resolver macht im Prinzip genau das, er löst EL-Ausdrücke auf, die auf Ihrer XHTML / JSF-Seite angetroffen werden. Wenn% ce_de% referenziert wird, kann dieser Name jedoch nicht korrekt aufgelöst werden, da er sich auf eine JSF-gesteuerte Bean mit diesem Namen bezieht und nicht in der Lage ist, den Spring Controller mit allen von Spring benötigten abhängigen Abhängigkeiten zu finden / p>
Spring 3 löst dieses Problem, indem es Ihnen einen benutzerdefinierten EL-Resolver zur Verfügung stellt, der anstelle des im Lieferumfang der JSF-Implementierung enthaltenen verwendet werden kann. Sie können angeben, dass es in testBean
Jetzt endlich:
sollte ich irgendeine Art von Zuhörern in meine web.xml?!
einfügen
Wenn Sie nur JSF + Spring ohne die Notwendigkeit für andere Spring-gesteuerte Servlets oder ohne Spring Security-Integration integrieren, dann brauchen Sie no in Ihrem faces-config.xml
nichts Zusätzliches. Sie müssten nur das FacesServlet und seine Kontextparameter sowie alle anderen Komponentenbibliotheks-Servlets von Drittanbietern deklarieren, die für Ihre Situation erforderlich sein könnten.