Kiedy tworzymy aplikację rozruchową Springa, opisujemy ją @SpringBootApplication
adnotacją. Ta adnotacja „zamyka” wiele innych niezbędnych adnotacji, aby aplikacja działała. Jedną z takich adnotacji jest @ComponentScan
adnotacja. Ta adnotacja nakazuje Springowi wyszukanie komponentów Spring i skonfigurowanie aplikacji do uruchomienia.
Twoja klasa aplikacji musi znajdować się na szczycie hierarchii pakietów, aby Spring mógł przeskanować pakiety podrzędne i znaleźć inne wymagane składniki.
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);
}
}
Poniższy fragment kodu działa, ponieważ pakiet kontrolera znajduje się w com.test.spring.boot
pakiecie
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!";
}
}
Poniższy fragment kodu NIE działa, ponieważ pakiet kontrolera NIE znajduje się w com.test.spring.boot
pakiecie
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!";
}
}
Z dokumentacji Spring Boot:
Wielu programistów Wiosna Boot zawsze mają ich główne klasy z adnotacją @Configuration
, @EnableAutoConfiguration
i @ComponentScan
. Ponieważ te adnotacje są tak często używane razem (zwłaszcza jeśli postępujesz zgodnie z powyższymi sprawdzonymi metodami), Spring Boot stanowi wygodną @SpringBootApplication
alternatywę.
@SpringBootApplication
Adnotacja jest równoważne użyciu
@Configuration
, @EnableAutoConfiguration
a @ComponentScan
ich domyślnych atrybutów