Сегодня, когда я проводил рефакторинг проекта, я столкнулся с проблемой. В Spring есть пакет, содержащий все классы конфигурации.В классе идеи инструмента разработки появляется сообщение о том, что контекст приложения не настроен для этого файла, как показано на рисунке.
Сначала я подумал, что это предупреждение, и проигнорировал его, но позже обнаружил, что все классы конфигурации, вызвавшие это сообщение, не были загружены.
Я был очень смущен. В исходном проекте код не менялся, но код был модульным и разделенным. Почему возникла эта проблема?
После поиска в Интернете есть реальный метод: использовать
@Импорт
Действительно, этот метод осуществим, и все классы конфигурации загружены. Однако у меня более 10 классов конфигурации. У меня болит голова, просто подумав об этом. Что меня еще больше смущает, так это то, почему мой исходный проект не работает. Где это надо настроить?Есть проблема.
Позже я получил рекомендации от эксперта.
Проблема возникает здесь: из-за субподряда я добавил эту конфигурацию в класс запуска.
Компонент, используемый для сканирования исходящих пакетов.
Проблема заключается здесь: если здесь включена функция сканирования, аннотация сканирования по умолчанию @SpringBootApplication будет признана недействительной.
По умолчанию сканируется текущий пакет.
Потом у меня просто возникла проблема с пакетом класса запуска.
решение . Удалите аннотацию @ComponentScan(basePackages = "com.xxx.core") в пакете класса запуска и поместите ее в любой класс конфигурации в пакете запуска.
Логика заключается в том, что аннотация @ComponentScan @SpringBootApplication класса запуска сканирует собственный пакет и внедряет классы конфигурации один за другим.При внедрении в определенный класс конфигурации обнаруживается, что существует @ComponentScan, поэтому он внедряет один за другим Это указывает компонент в пакете.
Идеальное решение.
Недавно запущенный бесплатный проект блоггера с открытым исходным кодом gitee (торговый центр + приложение + мини-программа + H5), заинтересованные друзья могут узнать о нем.
- Сайт скидок на облачный сервер Alibaba: нажмите здесь, чтобы войти
- Распродажа облачных серверов Tencent: нажмите здесь, чтобы принять участие