Wie initialisiere ich die Anwendung im Frühling?

8

Nun komm direkt zu meinem Punkt,

In JSP Ich mache den Initialisierungsprozess meiner Anwendung wie,

%Vor%

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.

    
Human Being 04.07.2013, 14:35
quelle

5 Antworten

8

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:

%Vor%

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.

    
Chris Thompson 18.07.2013, 15:56
quelle
6

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%     
Elbek 04.07.2013 14:42
quelle
2

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:

Ссылка

    
Risav Karna 22.07.2013 12:26
quelle
0

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.

%Vor%

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.

    
david99world 04.07.2013 14:37
quelle
0

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

vornehmen

Siehe Ссылка für ein Beispiel.

    
Ayub Malik 18.07.2013 16:19
quelle