Назад к вопросам
Junior
73
questionbank

Что делает аннотация @ComponentScan?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

@ComponentScan сканирует указанные пакеты для поиска компонентов Spring (классы, помеченные @Component, @Service, @Repository, @Controller и другие аннотации Spring). Найденные компоненты регистрируются в контексте приложения как Spring Beans.

Основные свойства:

  • basePackages: Массив строк, указывающий пакеты для сканирования. Если не указан, сканируется пакет класса, аннотированного @ComponentScan, и его подпакеты.
  • basePackageClasses: Массив классов. Пакеты этих классов используются для сканирования.
  • includeFilters: Определяет компоненты, которые должны быть включены в сканирование.
  • excludeFilters: Определяет компоненты, которые должны быть исключены из сканирования.

Пример использования:

// В конфигурационном классе
@Configuration
@ComponentScan(basePackages = "com.example.myapp.services") // Сканирует только пакет com.example.myapp.services
public class AppConfig {
    // ...
}
// В главном классе Spring Boot
@SpringBootApplication // Эта аннотация включает в себя @ComponentScan
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}