Nun komm direkt zu meinem Punkt,
In JSP
Ich mache den Initialisierungsprozess meiner Anwendung wie,
Jetzt werde ich meine vorherige Anwendung von Servlets
auf Spring 3.2
neu aufbauen.
Wie kann ich das mit Spring 3.2
machen?
Einer meiner colleague
hat mich dazu aufgefordert, dies zu tun initialization with Constructor of the Spring Controller
.
Weil ich die Bean für controller class
in applicationContext.xml
erstellt habe und ich die applicationContext.xml
Datei mit ContextLoadListner
in web.xml
lade.
Ist das der richtige Weg der Initialisierung?
Was ist mit ApplicationListener im Frühjahr?
Welcher ist der beste Weg, um die Anwendung in spring 3.2
zu initialisieren?
Ich hoffe, unsere Stack-Benutzer werden eine gute Lösung geben.
Spring wird bei korrekter Konfiguration viel für Sie tun. Wenn Sie wirklich Code ausführen müssen (anstatt etwas zu verwenden, das sich automatisch wie Log4J konfiguriert), würde ich vorschlagen, ein InitializingBean
zu registrieren und afterPropertiesSet
zu überschreiben. Sie würden dann diese Bean-Definition zur Datei applicationContext.xml hinzufügen:
Als Ergebnis ruft Spring die Methode MyInitializer.afterPropertiesSet()
auf, wenn die Anwendung vollständig initialisiert wurde. Sie könnten alternativ die Annotation @PostConstruct
für eine Bean verwenden, die im Anwendungskontext registriert wurde, aber es gibt keine Garantie, dass der Rest der Anwendung initialisiert wird, wenn diese Methode aufgerufen wird. Wenn Sie möchten, dass alles ausgeführt wird, ist die Initializing Bean-Methode der richtige Weg. Ich habe diese Strategie verwendet, um einen Server-Socket usw. zu starten, der unabhängig vom Lebenszyklus der Webanforderung ausgeführt werden musste.
Warum initiieren Sie die Federanwendung selbst? Frühling wird automatisch für Sie tun: So sagst du deinem Server, dass er den Frühling initialisieren soll:
%Vor%Dies passiert während der Bereitstellung und alle Beans sind definiert, da sie initialisiert werden (abhängig von der Faulheit). Wenn Sie wirklich etwas tun möchten, sobald Bean initialisiert wurde, verwenden Sie InitialisierenBean Beispiel wäre
%Vor% ContextLoaderListener
ist eine Art Bootstrapper, um Spring WebApplicationContext
zu starten, während ApplicationListener
eher auf der Java-Anwendungsebene selbst als im Webanwendungskontext liegt.
ContextLoaderListener
ist ein großartiges Standardwerkzeug für die Kontextualisierung Ihrer App, wenn mehrere DispatcherServlet
s oder einige Servlets / Servlet-Filter verschiedenen Diensten zugeordnet sind. Grundsätzlich ist es hilfreich, Listener für verschiedene Servlets solcher Apps zu haben, um eine feinere Kontextualisierung zu erreichen.
Ich kenne nicht die Art der Anwendung, die Sie erstellen, aber ich nehme an, dass Sie für jetzt etwas Grundlegendes versuchen. Wenn dies der Fall ist, und sogar in Fällen, in denen Sie ein komplexeres Setup haben, ist es besser, beim Start einen Controller zu laden, der sich um Ihre Hauptinitialisierungsroutinen einschließlich Ihrer Kontextualisierung kümmert. Sie können die Controller-Bean, die Sie haben, in Ihrer web.xml:
verwenden %Vor%Dieser Servlet kann auch zugeordnet und aufgerufen werden, wenn Sie ein bestimmtes URL-Muster lesen ZB
%Vor%Und im Web-Deployment-Deskriptor ist dieses Bit genau so, wie Sie Ihre Servlets anderen Spring-Services wie Spring Security zuordnen:
%Vor% Sie brauchen also nicht unbedingt den Konstruktor eines Controllers zu verwenden, und Sie müssen auch nicht immer ContextLoaderListener
oder andere Listener für einfache Initialisierungsaufgaben verwenden. Dennoch ist es praktisch, ihre Anwendungsfälle so zu lernen, wie Sie sie beim Skalieren Ihrer App benötigen.
Lesen Sie hier mehr über das Dispatcher-Servlet:
Du könntest das tun, indem du eine Bean mit @PostConstruct
hast und im Frühjahr in deine Servlet-Konfiguration eingibst. Sehen Sie sich den Code an hier und eine der Zeilen unten.
Dies wird diese Bean beim Start injizieren. Eine Methode für diese Bean hat die Annotation @PostConstruct
- das bedeutet, dass diese Methode beim Start aufgerufen wird.
Erstellen Sie eine Spring 3 MVC-Anwendung, und Sie müssen dies nicht tun!
Spring MVC unterstützt JSPs und Sie können die gesamte Konfiguration über Annotationen
vornehmenSiehe Ссылка für ein Beispiel.
Tags und Links java spring jsp initialization spring-mvc