Что скрывает @SpringBootApplication

Автоматическая конфигурация в Spring Boot существенно облегчает жизнь разработчика, исключая так называемый “настроечный boilerplate” из повседневной рутины. Для запуска и конфигурирования приложения на Spring Boot хватит двух аннотаций:

package test;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Test {
   
   public static void main(String[] args) {
     SpringApplication.run(Test.class, args); 
   }

Аннотация @SpringBootApplication включает сканирование компонентов и автоматическую конфигурацию приложения. На самом деле, за этой аннотацией скрывается целых три:

  1. @Configuration (Spring) – помечает класс как конфигурационный (в контексте java-based конфигурации).
  2. @ComponentScan (Spring) – включает сканирование компонентов, то есть классы-контроллеры и другие компоненты, которые вы создаете, будут автоматически зарегистрированы как бины в application context.
  3. @EnableAutoConfiguration (Spring Boot) – самая магическая аннотация из всех возможных. Именно она под капотом запускает весь механизм автоматической конфигурации Spring Boot.

@SpringBootApplication впервые появилась в версии 1.2.0, до этого приходилось указывать все три аннотации из списка.

Есть несколько вариантов запуска приложений на Spring Boot. В примере выше используется метод main, который позволяет запуститься из JAR при помощи командной строки. Он передает ссылку на класс Test и аргументы командной строки в метод SpringApplciation.run(), который запускает приложение.