Le printemps de l'Application Web: de faire quelque chose au démarrage (initialisation)
Je veux remplir certaines tables de ma DB à partir d'un fichier texte au démarrage, je veux que ma méthode d'initialisation d'être appelé que lorsque ma demande de faire démarrer.
Je suis à l'aide de Printemps (+MVC) et Hibernate avec MySQL.
comment puis-je faire?
double possible de le printemps de l'application web de l'initialisation de la base de données au démarrage
Nurkiewicz: est-ce n'est pas un doublon de stackoverflow.com/questions/7082594/..., parce que le flux d'informations est l'autre manière autour, de sorte que l'on pourrait utiliser d'autres moyens pour résoudre le problème.
C'est très semblable. Le mien est un peu plus générique.
Double Possible de méthode Execute au démarrage au printemps
Nurkiewicz: est-ce n'est pas un doublon de stackoverflow.com/questions/7082594/..., parce que le flux d'informations est l'autre manière autour, de sorte que l'on pourrait utiliser d'autres moyens pour résoudre le problème.
C'est très semblable. Le mien est un peu plus générique.
Double Possible de méthode Execute au démarrage au printemps
OriginalL'auteur Fabio B. | 2012-03-13
Vous devez vous connecter pour publier un commentaire.
Utiliser le postconstuct annotation quelque part à l'intérieur d'un bean :
Probablement fait (conception) de sens d'utiliser une configuration de haricot, mais il peut être n'importe quel haricot à tous.
Cela ne fonctionne pas pour le démarrage AsyncTasks. Utilisation sinuhepop de la recommandation ci-dessous - stackoverflow.com/a/9680800/1019307
OriginalL'auteur NimChimpsky
Vous pouvez créer une application à l'écoute, il est spécialement conçu pour de tels besoins. Dans ce cas, il sera exécuté à chaque fois que le contexte est démarré (ou actualisé).
Exactement ce que je cherchais à faire un auto-diagnostic. Merci!!!!
Cela devrait être la réponse... 🙂
Mais ce sera invoquée dans des cas de test ainsi et DB n'est pas disponible pour des cas de test. Comment aborder un tel scénario?
Vous avez deux options. 1) ne pas déclarer ce bean dans
@Configuration
pour les tests, de la même façon, vous n'avez probablement pas déclarer@Controller
ou@Scheduled
tâches. 2) Ajoutez un peu de logique conditionnelle dans cette méthode, peut-être l'analyse de trace de la pile afin de savoir si vous êtes dans un test jUnit. Évidemment, la première est préféré.OriginalL'auteur sinuhepop
Hibernate est livré avec un moyen d'ajouter des fichiers avec des instructions sql qui sera exécutée au démarrage.
Le paramètre est
hibernate.hbm2ddl.import_files
.@Voir Hibernate Référence: Chapitre 3.4. En option propriétés de configuration
Je friands quelques conseils que cela ne fonctionne que si hibernate est lancé dans la "création" de mode. Mais je ne suis pas sûr.
OriginalL'auteur Ralph
Deux options,
Première: Laisser hibernate créer votre ddl chaque fois que les services de démarrage(Uniquement pour les locaux ou à l'environnement de dev)
Ou de créer en ressort un Haricot avec init-paresseux faux et ajoutez-y de la logique pour créer la base de données si vous n'avez pas ou injecter votre script, ou faire ce que vous voulez.
OriginalL'auteur paul
Vous pouvez créer un peu de fève à la racine de contexte de configuration - comme
Ainsi - démarrage de l'application de la méthode "methodName" sera invoquée. Nous avons DB mises à niveau de la mise en œuvre d'une telle manière.
OriginalL'auteur Andrew Gans
Si vous avez votre
hibernate.hbm2ddl.auto
propriété définie àcreate
oucreate-drop
puis la façon la plus simple de le faire est par la mise enhibernate.hbm2ddl.import_files
propriété avec SQL nom du fichier qui contient des instructions SQL pour charger vos données initiales dans le schéma de base de données, par exemple, les utilisateurs de l'application.L'exemple suivant est un exemple de la méthode que j'ai dans mon
DatabaseConfig
classe. Il définithibernate.hbm2ddl.import_files
propriété avec SQL nom de fichier import_initial_data.sql qui contient les instructions SQL Insert pour charger mes données initiales pour le schéma de base de données.C'est mon
AppUser.java
dansmodel
package:Maven dependency pour lombok:
La import_initial_data.sql fichier que j'ai dans
resources
répertoire:Et le résultat de *SÉLECTIONNEZ * à PARTIR de appuser;*:
OriginalL'auteur Binyamin Regev