Конфигурация с использованием аннотации @SpringBootApplication

У меня проблема с конфигурацией Spring Boot.

Я создал базовый проект загрузки Spring, используя https://start.spring.io/

и у меня проблема, конфигурация работает только для классов в подкаталоге:

enter image description here

Я пробовал аннотации @ComponentScan

ты хоть представляешь, что я могу с этим сделать?

4 ответов


на документация по весенней загрузке для @SpringBootApplication государства

многие разработчики Spring Boot всегда имеют аннотированный основной класс с @Configuration, @EnableAutoConfiguration и @ComponentScan. Поскольку эти аннотации так часто используются вместе (особенно если вы следуете рекомендациям выше), Spring Boot предоставляет удобно @SpringBootApplication альтернативы.

на @SpringBootApplication аннотация эквивалентна использованию @Configuration, @EnableAutoConfiguration и @ComponentScan С атрибуты по умолчанию: [...]

здесь @ComponentScan у javadoc государств

если определенные пакеты не определены, сканирование будет происходить из пакет класса, который объявляет эту аннотацию.

то есть только типы, которые находятся в том же пакете, что и ваш ReadingListApplication будут проверяться.

если вы хотите пользовательскую конфигурацию, предоставьте свой собственный @Configuration, @EnableAutoConfiguration, и @ComponentScan, в зависимости от обстоятельств.


при создании Spring boot проект, у вас есть класс приложения (тот, который содержит @SpringBootApplication Аннотация В базовом пакете.

одна из вещей @SpringBootApplication does-это сканирование компонентов. Но, он только сканирует на суб-пакетов. т. е. если вы поместите этот класс в com.пакета mypackage, затем он будет сканировать все классы в подпакетах, т. е. com.пакета mypackage.*.

если вы не хотите делать это таким образом, вы можете также добавить @ComponentScan к a класс, указывающий корневой пакет i.e @ComponentScan("com.mypackage")

Я бы рекомендовал вам иметь базовый пакет i.e com.пакета mypackage. И внутри этих пакетов есть ваши субпакеты. У вас есть класс, содержащий @SpringBootApplication в базовый пакет.


проверка весенней документации:

http://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/autoconfigure/SpringBootApplication.html

вы можете переопределить с помощью @SpringBootApplication значения по умолчанию для сканирования компонентов. Вам просто нужно включить его в качестве параметров:

@SpringBootApplication(scanBasePackages = "entertainment")

или массив строк:

@SpringBootApplication(scanBasePackages = {"entertainment", "readinglist"})


У меня была такая же проблема, и для ее решения я переименовал свои пакеты следующим образом.

"com.проект"

там вы можете разместить свой основной класс SpringBootAplication, а затем просто создать другие пакеты, начинающиеся с " com.проект"

"com.проект.dao"

"com.проект.контроллер"

создание этой структуры подпроекта вам не нужно использовать scanBasePackages в @ SpringBootApplication аннотация, делая это ваш основной класс сможет найти каждый компонент в вашем проекте.

и в случае, если вы решили использовать scanBasePackages помните, что вам нужно установить все пакеты компонентов такой.

@SpringBootApplication(scanBasePackages = {"com.проект.Дао", "com.проект.controller"})