J'ai un problème avec la configuration Spring Boot.
J'ai créé un projet de base Spring Boot à l'aide de https://start.spring.io/
Et j'ai un problème, la configuration ne fonctionne que pour les classes du sous-catalogue:
J'ai essayé l'annotation @ComponentScan mais cela n'a pas aidé.
Avez-vous une idée de ce que je peux faire avec ça?
Les états documentation Spring Boot pour @SpringBootApplication
De nombreux développeurs Spring Boot ont toujours leur classe principale annotée avec
@Configuration
,@EnableAutoConfiguration
et@ComponentScan
. Comme ces annotations sont si souvent utilisées ensemble (surtout si vous suivez les meilleures pratiques ci-dessus), Spring Boot fournit un. alternative commode@SpringBootApplication
.L'annotation
@SpringBootApplication
équivaut à utiliser@Configuration
,@EnableAutoConfiguration
et@ComponentScan
avec leur attributs par défaut: [...]
où le @ComponentScan
javadoc indique
Si des packages spécifiques ne sont pas définis, l'analyse se fera à partir du fichier package de la classe qui déclare cette annotation.
Autrement dit, seuls les types contenus dans le même package que votre ReadingListApplication
seront analysés.
Si vous souhaitez une configuration personnalisée, indiquez vos propres @Configuration
, @EnableAutoConfiguration
et @ComponentScan
, selon le cas.
Lors de la configuration d'un projet Spring boot
, définissez votre classe Application (celle qui contient l'annotation @SpringBootApplication
dans le package de base.
Une des choses que le @SpringBootApplication
fait est une analyse de composant. Mais, il ne scanne que sur sous-packages . Si vous placez cette classe dans com.mypackage, toutes les classes des sous-packages seront analysées, à savoir com.mypackage. *.
Si vous ne voulez pas le faire de cette façon, vous pouvez également ajouter un @ComponentScan
à une classe spécifiant le package racine i.e @ComponentScan("com.mypackage")
Je vous recommanderais un package de base, à savoir com.mypackage. Et au sein de ces packages, ayez vos sous-packages. Avez-vous une classe contenant le @SpringBootApplication
dans ce paquet de base?.
J'avais le même problème et pour le résoudre, j'ai renommé mes paquets comme ceci.
"com.project"
là, vous pouvez placer votre classe principale SpringBootAplication, puis créer simplement les autres packages commençant par "com.project"
"com.project.dao"
"com.project.controller"
En créant cette structure de sous-projet, vous n'avez pas besoin d'utiliser scanBasePackages dans l'annotation @SpringBootApplication, ce qui permettra à votre classe principale de trouver tous les composants de votre projet.
Et au cas où vous choisiriez d’utiliser scanBasePackages, n’oubliez pas que vous devez définir tous vos packages de composants comme ceci.
@SpringBootApplication (scanBasePackages = {"com.project.dao", "Com.project.controller"})