SpringApplication.exécuter la méthode main
J'ai créé un projet dans Eclipse en utilisant le Printemps Starter modèle de projet.
Il a créé automatiquement une Demande de fichier de classe, et que le chemin d'accès correspond au chemin d'accès dans le POM.xml fichier, donc tout va bien. Voici la classe d'Application:
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
//SpringApplication.run(ReconTool.class, args);
ReconTool.main(args);
}
}
C'est une application en ligne de commande que je fais construire et afin de le faire fonctionner, j'ai eu à commenter les SpringApplication.exécuter la ligne et il suffit d'ajouter la méthode principale de mon autre classe à exécuter.
Autres que ce rapide jerry-rig, je peux le créer à l'aide de Maven et il fonctionne comme un Printemps de l'application, en quelque sorte.
Je préfère, cependant, pas de commentaire de la ligne de production, et à utiliser la totalité du framework Spring. Comment puis-je faire cela?
- vous voulez dire que vous voulez pour le lancement de cette application par maven au lieu de lancer à partir de l'IDE ?
- Votre ReconTool est le Printemps de l'application? Ou peut-être de la plaine de l'application Java?
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour exécuter
Application.run()
parce que cette méthode, on commence ensemble du Framework Spring. Le Code ci-dessous s'intègre à votremain()
avec Spring Boot.Application.java
ReconTool.java
Pourquoi ne pas
SpringApplication.run(ReconTool.class, args)
Car de cette façon, le printemps n'est pas complètement configuré (pas de composant d'analyse etc.). Seulement bean défini dans run() est créé (ReconTool).
Exemple de projet: https://github.com/mariuszs/spring-run-magic
RecontTool
a@Component
ajouté, de sorte que le printemps va exécuterRecontTool.run()
etRecontTool.main()
bien sûr 🙂SpringApplication.run(ReconTool.class, args)
marche aussi 🙂SpringApplication.run(Application.class
car cela fonctionne, la deuxième solution semble trop magique pour moi 🙂@Component
🙂 github.com/mariuszs/spring-run-magic@Configuration
,@ComponentScan
et@EnableAutoConfiguration
et l'utilisation@SpringBootApplication
au lieuÀ l'aide de:
fonctionnera dans toutes les circonstances. Si vous souhaitez lancer l'application à partir de l'IDE, ou l'outil de génération.
À l'aide de maven suffit d'utiliser
mvn spring-boot:run
tandis que dans gradle il serait
gradle bootRun
Une alternative à l'ajout de code dans la méthode run, est d'avoir un Printemps Bean qui implémente
CommandLineRunner
. Qui pourrait ressembler à:Découvrez cette guide de Printemps du guide officiel du référentiel.
Le plein Printemps de Démarrage de la documentation peut être trouvée ici
Une autre façon est d'étendre l'application (que ma demande a été d'hériter et de personnaliser le parent). Il appelle la société mère et de ses commandlinerunner automatiquement.