Ответ
Аннотация @SpringBootApplication — это мета-аннотация (композитная), которая объединяет функциональность трех основных аннотаций Spring:
-
@SpringBootConfiguration(наследник@Configuration)- Помечает класс как класс конфигурации Spring, источник определений бинов (
@Bean).
- Помечает класс как класс конфигурации Spring, источник определений бинов (
-
@EnableAutoConfiguration- Включает механизм автоконфигурации Spring Boot.
- На основе зависимостей в
classpath(например,spring-boot-starter-data-jpa) автоматически настраивает соответствующие бины и свойства.
-
@ComponentScan- Включает сканирование пакетов на наличие компонентов Spring.
- Автоматически обнаруживает и регистрирует бины, помеченные как
@Component,@Service,@Repository,@Controller. - По умолчанию сканирование начинается с пакета, содержащего класс, помеченный
@SpringBootApplication.
Пример стандартного использования:
@SpringBootApplication // Эквивалентно @Configuration + @EnableAutoConfiguration + @ComponentScan
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
Важные атрибуты для переопределения поведения:
@SpringBootApplication(
scanBasePackages = "com.mycompany.packages", // Изменить пакеты для сканирования
exclude = {DataSourceAutoConfiguration.class} // Отключить конкретную автоконфигурацию
)
public class MyApplication { ... }