Lorsque nous créons une application Spring Boot, nous l'annotons avec une @SpringBootApplication
annotation. Cette annotation «termine» de nombreuses autres annotations nécessaires au fonctionnement de l'application. L'une de ces annotations est l' @ComponentScan
annotation. 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.boot
package
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.boot
package
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
, @EnableAutoConfiguration
et @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 @SpringBootApplication
alternative pratique .
L' @SpringBootApplication
annotation équivaut à utiliser
@Configuration
, @EnableAutoConfiguration
et @ComponentScan
avec leurs attributs par défaut