Конфигурация с использованием аннотации @SpringBootApplication
У меня проблема с конфигурацией Spring Boot.
Я создал базовый проект загрузки Spring, используя https://start.spring.io/
и у меня проблема, конфигурация работает только для классов в подкаталоге:
Я пробовал аннотации @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
в базовый пакет.
проверка весенней документации:
вы можете переопределить с помощью @SpringBootApplication значения по умолчанию для сканирования компонентов. Вам просто нужно включить его в качестве параметров:
@SpringBootApplication(scanBasePackages = "entertainment")
или массив строк:
@SpringBootApplication(scanBasePackages = {"entertainment", "readinglist"})
У меня была такая же проблема, и для ее решения я переименовал свои пакеты следующим образом.
"com.проект"
там вы можете разместить свой основной класс SpringBootAplication, а затем просто создать другие пакеты, начинающиеся с " com.проект"
"com.проект.dao"
"com.проект.контроллер"
создание этой структуры подпроекта вам не нужно использовать scanBasePackages в @ SpringBootApplication аннотация, делая это ваш основной класс сможет найти каждый компонент в вашем проекте.
и в случае, если вы решили использовать scanBasePackages помните, что вам нужно установить все пакеты компонентов такой.
@SpringBootApplication(scanBasePackages = {"com.проект.Дао", "com.проект.controller"})