Lorsque nous créons une application Spring Boot, nous l'annotons avec une @SpringBootApplicationannotation. Cette annotation «termine» de nombreuses autres annotations nécessaires au fonctionnement de l'application. L'une de ces annotations est l' @ComponentScanannotation. Cette annotation indique à Spring de rechercher les composants Spring et de configurer l'application pour qu'elle s'exécute.
Votre classe d'application doit être au sommet de votre hiérarchie de packages, afin que Spring puisse analyser les sous-packages et découvrir les autres composants requis.
package com.test.spring.boot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
L'extrait de code ci-dessous fonctionne car le package du contrôleur est sous com.test.spring.bootpackage
package com.test.spring.boot.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HomeController {
@RequestMapping("/")
public String home(){
return "Hello World!";
}
}
L'extrait de code ci-dessous ne fonctionne PAS car le package du contrôleur n'est PAS sous com.test.spring.bootpackage
package com.test.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HomeController {
@RequestMapping("/")
public String home(){
return "Hello World!";
}
}
À partir de la documentation de Spring Boot:
De nombreux développeurs Spring Boot ont toujours leur classe principale annotée avec @Configuration , @EnableAutoConfigurationet @ComponentScan. Étant donné que ces annotations sont si fréquemment utilisées ensemble (surtout si vous suivez les meilleures pratiques ci-dessus), Spring Boot offre une @SpringBootApplicationalternative pratique .
L' @SpringBootApplicationannotation équivaut à utiliser
@Configuration, @EnableAutoConfigurationet @ComponentScanavec leurs attributs par défaut