Когда мы создаем загрузочное приложение Spring, мы аннотируем его @SpringBootApplication
аннотациями. Эта аннотация «завершает» многие другие аннотации, необходимые для работы приложения. Одна из таких аннотаций - @ComponentScan
аннотация. Эта аннотация сообщает Spring искать компоненты Spring и настраивать приложение для запуска.
Класс вашего приложения должен быть наверху иерархии пакетов, чтобы Spring мог сканировать подпакеты и находить другие необходимые компоненты.
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);
}
}
Ниже фрагмент кода работает, поскольку пакет контроллера находится в com.test.spring.boot
пакете
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!";
}
}
Ниже фрагмент кода НЕ работает, поскольку пакет контроллера НЕ находится подcom.test.spring.boot
пакетом
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!";
}
}
Из документации Spring Boot:
Многие разработчики Spring Загрузочного всегда имеют свой основной класс с аннотацией @Configuration
, @EnableAutoConfiguration
и@ComponentScan
. Поскольку эти аннотации очень часто используются вместе (особенно если вы следуете приведенным выше рекомендациям), Spring Boot предоставляет удобную @SpringBootApplication
альтернативу.
@SpringBootApplication
Аннотация эквивалентно использования
@Configuration
, @EnableAutoConfiguration
и @ComponentScan
с их атрибутами по умолчанию