Этот вопрос проверяет понимание работы механизма сканирования компонентов (@ComponentScan) в Spring и его роли в автоматической регистрации бинов.
Компонент-сканирование (@ComponentScan) находит классы с аннотациями, такими как @Component, @Service, @Repository и @Controller, и регистрирует их как бины в контейнере IoC. Это упрощает процесс создания бинов, устраняя необходимость в их ручной регистрации.
Компонент-сканирование (@ComponentScan) — это механизм Spring для автоматического обнаружения и регистрации бинов. Он используется для поиска классов, помеченных стереотипными аннотациями, такими как @Component, @Service, @Repository, @Controller и другими пользовательскими аннотациями. Это избавляет разработчика от необходимости вручную регистрировать каждый бин.
Включается с помощью аннотации @ComponentScan в конфигурации:
@Configuration
@ComponentScan(basePackages = "com.example.app")
public class AppConfig {}Spring сканирует указанные пакеты и их подкаталоги на наличие классов с соответствующими аннотациями.
Можно указать несколько пакетов для сканирования:
@ComponentScan(basePackages = {"com.example.service", "com.example.repository"})Также можно исключать или включать определенные классы:
@ComponentScan(
basePackages = "com.example.app",
excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Deprecated.class)
)Пример: Если у вас есть класс:
@Component
public class MyComponent {
public String sayHello() {
return "Hello!";
}
}При сканировании пакета Spring автоматически зарегистрирует этот класс как бин.
Заключение:
Компонент-сканирование — это мощный инструмент для упрощения конфигурации Spring-приложений, который позволяет автоматизировать процесс регистрации бинов.