Ответ
Собственный Spring Boot Starter создают для инкапсуляции и автоматизации настройки переиспользуемой функциональности (библиотек, конфигураций, кастомных компонентов). Это позволяет подключать её в другие проекты одной зависимостью, избегая ручного конфигурирования.
Основные причины:
- Стандартизация — единый способ настройки для всех команд.
- Упрощение — разработчики добавляют только dependency, вся конфигурация применяется автоматически.
- Сокрытие сложности — внутренняя логика и зависимости инкапсулированы в 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, и аспект логирования автоматически регистрируется в контексте.