Ответ 1
В моем опыте использования Spring загрузочного пользователя основными факторами для Spring Boot для определения того, какие автоконфигурации будут включены, являются:
1) Классы, присутствующие в пути к классам. Например, если присутствуют классы RabbitMQ и Spring AMQP, тогда будет включен параметр RabbitAutoConfiguration
. Соответствующая аннотация @ConditionalOnClass
,
2) Наличие или отсутствие пользовательского beans. Например, если все Spring Data JPA присутствует в пути к классам, Spring Boot зарегистрирует LocalContainerEntityManagerFactoryBean
bean, только если пользователь еще этого не сделал. Зарегистрированный пользователем beans "переопределяет" значения по умолчанию. Соответствующая аннотация @ConditionalOnMissingBean
Как упоминает @DaveSyer, вы можете, конечно, использовать Spring Boot без @EnableAutoConfiguration
, если вы хотите включить соответствующую конфигурацию самостоятельно. Или вы можете использовать менее решительное решение поля exclude
@EnableAutoConfiguration
. Если, например, вы хотите Spring Boot для автоконфигурации всего, кроме ActiveMQ, вы должны использовать @EnableAutoConfiguration(exclude=ActiveMQAutoConfiguration.class)
По моему мнению, здесь нет абсолютно никакого уголовного преступления! Вы можете использовать то, что хотите от Spring Boot. Когда вы не хотите что-то предлагать, вы можете легко отказаться от частичного или полного!
Также, если вы хотите посмотреть под обложками, вы можете добавить свойство
logging.level.org.springframework.boot=DEBUG
до application.properties
и Spring Boot с радостью предоставит подробный отчет о том, что было настроено автоматически и что не было