1
votes

Comment trouver le point d'entrée d'une application Spring Boot?

Quel est le point d'entrée d'une application Spring Boot?

En parcourant le code d'une application Spring Boot, tout ce qu'il dit est qu'il y a un code

public static void main having - SpringApplication.run(Application.class, args) 

Exemple - SpringBoot2RestServiceApplication.java .

Mais comment savoir quel est le point d'entrée, simplement en passant code. Plus tôt, si nous passons par applicationContext.xml - exemple - applicationContext.xml , nous pourrions comprendre le flux.

Y a-t-il un moyen ou peut-être une norme à suivre pour rendre cette compréhension explicite?

Ma question était plus de comprendre le déroulement de l'application que de trouver la classe principale. Une option pourrait être de séparer les configurations (@Configuration) en une classe distincte ayant plusieurs annotations @Bean, cela aiderait à trouver tous les câblages de haricots en un seul endroit. Existe-t-il une norme que les grands projets utilisent pour rendre le flux de code compréhensible?


0 commentaires

3 Réponses :


4
votes

La chose la plus simple à faire serait probablement de rechercher @SpringBootApplication dans votre code.

Mais, un moyen garanti d'obtenir ces informations serait de créer le JAR Spring Boot. De là, vous pouvez ouvrir le JAR résultant et trouver la classe principale définie dans le manifeste, sous META-INF / MANIFEST.MF . Vous le verrez sous l'attribut Start-Class :

Start-Class: com.example.foo.Application


4 commentaires

Ma question était plus de comprendre le flux de l'application que de trouver la classe principale. Par exemple, une application de service Web Spring Boot, la classe @RestTemplate pourrait être le point d'entrée, pour comprendre par où commencer à comprendre le code. Une option pourrait être de séparer les configurations dans une classe distincte ayant des annotations @Bean , cela aiderait à trouver tous les câblages de haricots en un seul endroit. Existe-t-il une norme que les grands projets utilisent pour résoudre ce problème de compréhension du code?


@ManojMohandas Si je comprends votre question, ce flux de processus est géré par le programmeur et peut être contrôlé lors de la conception.


@HimadriMandal - Y a-t-il une manière standard de le faire? Comme une bonne façon de suivre, que d'autres grands projets suivent pour le même? Je recherche quelque chose où un nouveau développeur clone simplement le projet et passe 1 à 2 jours sans aide (ou très limitée) pour comprendre la base de code.


Je pense que l'OP étudie une application Spring Boot existante et demande comment localiser n'importe quel coureur, tel que CommandLineRunner, contrôleurs MVC, contrôleurs Rest, etc. Je ne sais pas s'il existe un moyen facile de les localiser, sauf s'ils sont regroupés dans la conception originale



0
votes

recherchez l'annotation @SpringBootApplication dans votre projet, la classe avec l'annotation @SpringBootApplication effectuera automatiquement l'analyse des composants pour les sous-packages.

si aucune annotation @SpringBootApplication n'a été trouvée, recherchez la classe étendant "SpringBootServletInitializer" qui est également un point de départ pour l'application de démarrage de printemps


1 commentaires

il est très bien possible que plusieurs classes d'un projet aient cette annotation



1
votes

Je pense que l'OP étudie une application Spring Boot existante et demande comment localiser n'importe quel coureur, tel que Application Runners, Command Line Runners, contrôleurs MVC, contrôleurs Rest, etc.

Je ne sais pas s'il existe un moyen facile de les localiser, à moins qu'ils ne soient regroupés dans la conception d'origine.

C'est un problème difficile à faire par programme, car les threads peuvent être lancés en dehors de Spring, par exemple dans un constructeur ou un @PostConstruct.

Ce serait bien cependant s'il y avait un support IDE pour localiser facilement tout ce qui est lancé par Spring Boot


1 commentaires

Existe-t-il des bonnes pratiques que les projets pourraient suivre pour concevoir des applications Spring Boot où le code peut être plus lisible et comprendre le flux de l'application. Comme précédemment, il y avait applicationContext.xml qui fournit le flux, des pratiques similaires avec une application basée sur des annotations peuvent suivre.