Comment Initialiser l'application au printemps?
Maintenant de venir directement à mon point de vue,
Dans JSP
je ferai le processus d'initialisation de mon application comme,
<%! public void jsp_init(){
//Initialise the domain server to create protocol
//Create the logging file
}%>
Maintenant, je vais reconstruire ma précédente demande de Servlets
à Spring 3.2
.
Comment je peut faire cela avec Spring 3.2
?
Un de mes colleague
m'a dit de faire ce initialization with Constructor of the Spring Controller
.
Parce que j'ai créé le haricot pour controller class
dans le applicationContext.xml
et je suis le chargement de la applicationContext.xml
fichier withe ContextLoadListner
dans web.xml
.
Est-ce la bonne manière de l'Initialisation ?
Ce sujet ApplicationListener au printemps ?
Qui est la meilleure façon d'initialiser l'application dans spring 3.2
?
Espère que notre pile les utilisateurs donnent une bonne solution.
OriginalL'auteur Human Being | 2013-07-04
Vous devez vous connecter pour publier un commentaire.
Printemps va faire beaucoup pour vous, s'il est configuré correctement. Si vous avez vraiment besoin d'exécuter du code (vs l'aide de quelque chose qui va configurer automatiquement lui-même comme Log4J), je suggère de l'enregistrement d'un
InitializingBean
et dominanteafterPropertiesSet
. Vous serait alors ajouter cette fève de la définition de la applicationContext.xml fichier:Comme un résultat, le Printemps sera invoquer la
MyInitializer.afterPropertiesSet()
méthode lorsque l'application a été entièrement initialisé. Vous peut utiliser la@PostConstruct
annotation sur un haricot qui a été inscrit dans le contexte de l'application, mais il n'ya aucune garantie que le reste de l'application sera initialisé lorsque cette méthode est invoquée. Si vous souhaitez exécuter lorsque tout a été mis en place, l'Initialisation du Bean méthode est le chemin à parcourir. J'ai utilisé cette stratégie pour démarrer un serveur de socket, etc que nécessaire pour fonctionner de manière autonome de la demande web cycle de vie.Qui pourrait fonctionner ainsi. Cela dépend si vous avez besoin d'être informé de plusieurs types d'événements de l'application ou tout simplement le démarrage.
J'ai besoin de faire une tâche , une seule fois après mon tomcat commencé...quel est le meilleur moyen pour cela ?
Je voudrais le faire de la manière que j'ai décrite. (En fait, j'ai fait fait la façon dont je l'ai décrit! 😉 )
Merci et mis en œuvre avec succès vos ides et fonctionne très bien.
OriginalL'auteur Chris Thompson
Pourquoi u initialiser le printemps de l'application par vous-même? Le printemps va le faire automatiquement pour vous:
C'est une façon de dire à votre serveur pour initialiser printemps:
Ce qui se passera pendant deploymentand tous les haricots sont définis, il sera initialisé(en fonction de la paresse).
Si vous voulez vraiment faire quelque chose une fois, la fève est initialisé, avant l'utilisation, puis utilisez InitializingBean
Exemple serait
ContextLoaderListener
. Il est préférable de configurer votreDispatcherServlet
et déléguer des tâches spécifiques à traversContextLoaderListener
seulement où vous avez besoin du contexte.Pourquoi c'est une mauvaise idée? Spring framework lui-même est livré avec cet écouteur et vous recommande de l'utiliser pour le charger.
DispatcherServlet
est pour mvc et mvc est à moins de 10% de cadre lui-même, que si je ne veux pas utiliser mvc?OriginalL'auteur Elbek
ContextLoaderListener
est une sorte de programme d'amorçage pour le démarrage du PrintempsWebApplicationContext
toutApplicationListener
est plus à la java niveau de l'application elle-même plutôt qu'au contexte d'application web.ContextLoaderListener
est un excellent outil de référence pour la mise en contexte de votre application si elle a de multiplesDispatcherServlet
s ou certains servlets/servlet filtres associées à différents services. Fondamentalement, il est utile d'avoir des auditeurs pour les différents servlets de telles applications, de sorte que vous pouvez avoir à grain fin de contextualisation.Je ne sais pas la nature de l'application que vous créez, mais je suppose que vous essayez quelque chose de fondamental pour l'instant. Si c'est le cas, et même dans le cas où vous avez de plus en plus complexes, de l'installation, il est préférable de charger au démarrage d'un contrôleur qui prend soin de vos principales routines d'initialisation, y compris votre contextualisation. Vous pouvez utiliser le contrôleur de haricots que vous avez avec quelque chose comme ceci dans votre web.xml:
Ce servelt peut également être mis en correspondance et appelée chaque fois que vous lisez un certain modèle d'url
E. g.
Et dans le descripteur de déploiement web, ce bit est juste comme carte de vos servlets de Printemps d'autres services comme le Printemps de Sécurité:
De sorte que vous n'avez pas vraiment besoin d'utiliser le constructeur, d'un contrôleur et vous n'avez toujours besoin de l'utiliser
ContextLoaderListener
ou d'autres auditeurs pour de simples tâches d'initialisation. Néanmoins, il est utile d'apprendre de leurs cas d'utilisation que vous en aurez besoin lors de la mise à l'échelle de votre application.Lire plus sur le répartiteur de la servlet ici:
http://static.springsource.org/spring/docs/3.2.x/javadoc-api/org/springframework/web/servlet/DispatcherServlet.html
Il dit qu'il a fait un contrôleur et est le plus probablement aller à la mvc déjà fait du chemin. Voir plus de détails sur cette question ici lien: "C'est une bonne pratique de conserver une séparation claire entre le niveau intermédiaire des services tels que la logique métier des composants et des classes d'accès aux données (qui sont généralement définis dans l'ApplicationContext) et sur le web à des éléments connexes tels que les contrôleurs et les résolveurs de vue (qui sont définis dans le WebApplicationContext par Répartiteur Servlet)."
OriginalL'auteur Risav Karna
Vous pouvez faire cela en ayant un haricot avec
@PostConstruct
et de l'injecter dans votre servlet-config au printemps. Jetez un coup d'oeil au code ici et l'une des lignes en bas.Ce qui permettra d'injecter cette fève au démarrage d'une méthode sur ce bean a l'annotation
@PostConstruct
- cela signifie qu'au démarrage de cette méthode est appelée.OriginalL'auteur david99world
Créer un Printemps 3 MVC de l'application et vous n'avez pas besoin de faire cela!
Spring MVC prend en charge les Jsp et vous pouvez faire toute la configuration par Annotations
Voir http://fruzenshtein.com/spring-mvc-creation-of-simple-controller-with-java-based-config/ pour un exemple.
OriginalL'auteur Ayub Malik