Зачем создавать собственный Spring Boot Starter?

«Зачем создавать собственный Spring Boot Starter?» — вопрос из категории Spring, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Собственный Spring Boot Starter создают для инкапсуляции и автоматизации настройки переиспользуемой функциональности (библиотек, конфигураций, кастомных компонентов). Это позволяет подключать её в другие проекты одной зависимостью, избегая ручного конфигурирования.

Основные причины:

  1. Стандартизация — единый способ настройки для всех команд.
  2. Упрощение — разработчики добавляют только dependency, вся конфигурация применяется автоматически.
  3. Сокрытие сложности — внутренняя логика и зависимости инкапсулированы в starter.

Пример: Starter для кастомного логирования HTTP-запросов.

1. Автоконфигурационный класс:

@Configuration
@ConditionalOnClass(MyLoggingAspect.class)
@AutoConfigureAfter(WebMvcAutoConfiguration.class)
public class MyLoggingAutoConfiguration {
    @Bean
    @ConditionalOnMissingBean
    public MyLoggingAspect loggingAspect() {
        return new MyLoggingAspect();
    }
}

2. Регистрация в META-INF/spring.factories (для Spring Boot < 2.7):

org.springframework.boot.autoconfigure.EnableAutoConfiguration=
com.example.mylogging.MyLoggingAutoConfiguration

Для Spring Boot >= 2.7 используется файл META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports.

3. Использование: Проект просто добавляет зависимость my-logging-starter, и аспект логирования автоматически регистрируется в контексте.