Ответ
@ComponentScan — это аннотация Spring Framework, которая указывает контейнеру, в каких пакетах искать классы-компоненты для автоматического обнаружения и регистрации в контексте приложения как Spring-бины.
Как работает:
- Сканирует указанные пакеты (по умолчанию — пакет класса конфигурации и его подпакеты).
- Обнаруживает классы, помеченные стереотипными аннотациями:
@Component,@Service,@Repository,@Controller,@Configuration. - Регистрирует найденные классы как бины в
ApplicationContext.
Пример использования:
@Configuration
@ComponentScan("com.example.service") // Сканирует только указанный пакет
public class AppConfig {
}
Ключевые возможности:
- Указание нескольких пакетов:
@ComponentScan({"com.example.service", "com.example.dao"}) - Фильтрация компонентов: Можно включать (
includeFilters) или исключать (excludeFilters) классы по аннотациям, регулярным выражениям или другим критериям. - Наследование конфигураций:
@ComponentScanможно использовать в иерархии конфигурационных классов.