Ответ
Да, хорошо спроектированный Spring Boot Starter должен работать без предварительной настройки, следуя принципу convention over configuration (соглашение по умолчанию).
Как это достигается:
- Автоконфигурация: Классы, помеченные
@Configuration, настраивают бины автоматически при соблюдении условий. - Условные аннотации: Использование
@ConditionalOnClass,@ConditionalOnMissingBeanи других для включения конфигурации только когда это необходимо. - Стандартные настройки: Предоставление разумных значений по умолчанию через
@ConfigurationProperties.
Пример минимальной автоконфигурации:
@Configuration
@ConditionalOnClass(MyService.class) // Конфигурируется, только если MyService в classpath
@EnableConfigurationProperties(MyProperties.class) // Подключает свойства
public class MyAutoConfiguration {
@Bean
@ConditionalOnMissingBean // Создает бин, только если он еще не определен пользователем
public MyService myService() {
return new DefaultMyService();
}
}
Файл META-INF/spring.factories (для Spring Boot < 2.7):
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.MyAutoConfiguration
Для Spring Boot 2.7+ используется файл META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports.
Таким образом, стартер «из коробки» предоставляет рабочую функциональность, которую пользователь может переопределить при необходимости.