Использование аннотации @SpringBootApplication

Многим разработчикам Spring Boot нравится, когда их приложения используют автоконфигурацию, сканирование компонентов и могут определять дополнительную конфигурацию в своем "application class". Одну аннотацию @SpringBootApplication можно использовать для включения этих трех функций, а именно:

  • @EnableAutoConfiguration: включить механизм автоконфигурации Spring Boot
  • @ComponentScan: включить сканирование @Component для пакета, в котором находится приложение
  • @Configuration: позволяет регистрировать дополнительные компоненты (beans) в контексте или импортировать дополнительные классы конфигурации

package com.example.myapplication;

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

// то же самое что и 
// @Configuration @EnableAutoConfiguration @ComponentScan
@SpringBootApplication 
public class Application {

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

}

@SpringBootApplication также предоставляет псевдонимы для настройки атрибутов @EnableAutoConfiguration и @ComponentScan.

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

package com.example.myapplication;

import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.ComponentScan
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

@Configuration(proxyBeanMethods = false)
@EnableAutoConfiguration
@Import({ MyConfig.class, MyAnotherConfig.class })
public class Application {

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

}

В этом примере Application аналогично любому другому приложению Spring Boot, за исключением того, что @Component-аннотированные классы и @ConfigurationProperties-аннотированные классы не обнаруживаются автоматически, а определяемые пользователем компоненты (beans) импортируются явно (@Import).


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки