Ho scritto un'app basata su Spring Boot, ma funzionaquando metto tutta la classe (modello, contoller che ha annotato con @restController) nello stesso pacchetto di dove esiste SpringBoot. La mia domanda è perché queste classi devono essere nello stesso pacchetto?
questa è l'app di avvio a molla annotata:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
} }
Questo è il resto del controller:
@RestController
public class PersonController {
@RequestMapping("/Hello")
public String syaHello(@RequestParam(value = "name", defaultValue = "World") String name) {
return "Hello " + name;
} }
risposte:
3 per risposta № 1Perché questo è il comportamento predefinito di @SpringBootApplication
annotazione. Più correttamente, la scansione dei componenti rileva tutte le configurazioni e i componenti del pacchetto e tutti i sottopacchetti della classe con l'annotazione. Se vuoi avere le tue classi in altri pacchetti, allora puoi specificare quei pacchetti o classi con i pacchetti come attributi nell'annotazione:
@SpringBootApplication(scanBasePackageClasses = {OneClass.class, AnotherClass.class})
Spring analizzerà quindi i pacchetti e i pacchetti secondari delle classi OneClass e AnotherClass.