venez maintenant directement à mon point,
in maintenant je Je vais reconstruire mon application précédente à partir de Comment puis-je faire cela avec Un de mes Parce que j'ai créé le haricon pour est-ce la bonne façon d'initialisation? p> Qu'en est-il de ApplicationListener strong> au printemps? p> Quelle est la meilleure façon d'initialiser l'application dans J'espère que nos utilisateurs de stack donneront une bonne solution . p> p> jsp code> Je ferai le processus d'initialisation de mon application comme, P> servlets code> à printemps 3.2 code>. p> printemps 3.2 code> ? P> Collègue Code> m'a dit que cette initialisation avec constructeur du contrôleur de ressort code>. p> Classe de contrôleur code> dans l'application ApplicationContext.xml code> et je charge le applicateurContext.xml code> fichier avec contextloadlistner code> dans web.xml code>. p> printemps 3.2 code>? p>
5 Réponses :
Vous pouvez le faire en ayant un haricot avec @postConstruct code> et injectant dans votre servlet-config au printemps. Jetez un coup d'oeil sur le code ici et une des lignes en bas. <beans:bean id="PlayerImportDaoImpl"
class="com.footieview.app.importer.dao.PlayerImportDaoImpl" />
Pourquoi voulez-vous initialiser l'application de printemps par vous-même? Le printemps fera automatiquement pour vous:
C'est ainsi que vous indiquez à votre serveur d'initialiser le ressort: Cela se produira pendant le déploiement et tous les haricots sont définis là-bas, il sera initialisé (en fonction de la paresse).
Si vous voulez vraiment faire quelque chose une fois que le haricot est initialisé, avant l'utilisation, utilisez Initializingbean
Exemple serait p>
Ce n'est peut-être pas une bonne idée d'initialiser l'application via contextloaderlistener code>. Il est préférable de configurer votre DispatcherServlet CODE> et déléguer des tâches spécifiques via contextloaderlistener code> uniquement lorsque vous avez besoin du contexte.
Pourquoi c'est mauvaise idée? Le cadre de printemps est livré avec cet auditeur et vous recommande de l'utiliser pour le charger. DispatcherServlet CODE> Pour MVC et MVC est inférieur à 10% du cadre lui-même, que si je ne veux pas utiliser MVC?
Le printemps fera beaucoup de ceci pour vous s'il est configuré correctement. Si vous avez vraiment besoin d'exécuter du code (vs à l'aide de quelque chose qui se configurera automatiquement comme log4j), je vous suggérerais d'enregistrer un En conséquence, le ressort invoquera le initializizingbean code> et de remplacement après-accert code>. Vous ajouteriez cette définition de haricot à l'applicationContext.xml Fichier: myInitializer.AfterPropertiSet () code> méthode lorsque l'application a été complètement initialisé. Vous pouvez également utiliser l'annotation @postConstruct code> sur un haricot enregistré dans le contexte de l'application, mais rien ne garantit que le reste de l'application sera initialisé lorsque cette méthode est invoquée. Si vous voulez qu'il soit exécuté lorsque tout a été mis en place, la méthode d'initialisation du haricot est la voie à suivre. J'ai utilisé cette stratégie pour démarrer une prise de serveur, etc. qui devait fonctionner indépendamment du cycle de vie de la demande Web. P> P>
Merci pour votre réponse.wat à propos de votre opinion avec la réponse.
@KitePlayer qui fonctionnerait aussi. Cela dépend de la question de savoir si vous devez être informé de plusieurs types d'événements d'application ou juste le démarrage.
J'ai besoin de faire une tâche, une seule fois après que mon tomcat a commencé ... Quel est le meilleur moyen pour cela?
@KitePlayer je ferais cela comme je l'ai décrit. (En fait, je
Merci et mis en œuvre avec succès vos IDes et fonctionne bien.
Créer une application Spring 3 MVC et vous n'avez pas besoin de le faire! p>
printemps MVC prend en charge JSPS et vous pouvez faire toute la configuration via Annotations P>
voir http: // fruzenshtein. com / ressort-mvc-création-of-Simple-contrôleur-with-java-basé sur config / pour un exemple. p>
Je ne connais pas la nature de l'application que vous construisez mais je suppose que vous essayez quelque chose de base pour l'instant. Si tel est le cas, et même dans les cas où vous avez une configuration plus complexe, il est préférable de charger le démarrage d'un contrôleur qui prend soin de vos principales routines d'initialisation, y compris de votre contextualisation. Vous pouvez utiliser le haricot du contrôleur que vous avez avec quelque chose comme celui-ci dans votre web.xml: p> Ce servel peut également être mappé et invoqué chaque fois que vous lisez un certain motif d'URL.
Par exemple, p> et dans le descripteur de déploiement Web, ce bit est comme si vous préférez que vos servlets sur d'autres services de printemps tels que Security Spring Security: P> contextloaderlistener code> est une sorte de bootstrapper pour démarrer le ressort webapplicationContext code> tandis que ApplicationListener code> est plus au niveau de l'application Java plutôt que sur l'application Web. Contexte. contextloaderlistener code> est un outil excellent et standard pour la contextualisation de votre application s'il possède plusieurs Disternersservlet Code> S ou certains servlets / filtres de servlet mappés sur différents services. Fondamentalement, il est pratique d'avoir des auditeurs pour différents servlets de telles applications afin que vous puissiez avoir une contextualisation à grain fin. P> <servlet-mapping>
<servlet-name>crunchify</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
Et s'il ne veut pas utiliser MVC, il veut charger le printemps?
Il dit qu'il a fait un contrôleur et qui va probablement aller la voie mvc déjà. Voir plus de détails sur ce numéro ici Lien < / a>: "Il s'agit d'une meilleure pratique de conserver une séparation claire entre les services de niveau intermédiaire tels que les composants logiques commerciaux et les classes d'accès aux données (qui sont généralement définis dans l'applicationContext) et les composants liés au Web tels que les contrôleurs et les résolveurs d'affichage ( qui sont définis dans le WebApplicationContext par servlet de répartiteur). "