17. Расскажите про аннотацию @ComponentScan

17. Расскажите про аннотацию @ComponentScan

UNKNOWN

Аннотация  @ComponentScan  используется  вместе  с  аннотацией  @Configuration  для указания пакетов, которые мы хотим сканировать на наличие компонентов, из которых нужно сделать бины.

@ComponentScan без аргументов указывает Spring по умолчанию сканировать текущий пакет и все его подпакеты. Текущий пакет - тот, в котором находится файл конфигурации с этой самой аннотацией @ComponentScan. В данном случае в контейнер попадут:

  • бин конфигурационного класса;
  • бины, объявленные в конфигурационном классе с помощью @Bean;
  • все бины из пакета и его подпакетов.

Аннотация  @SpringBootApplication  включает  в  себя  аннотации  @ComponentScan, @SpringBootConfiguration и @EnableAutoConfiguration, но это не мешает разместить её ещё раз отдельно для указания конкретного пакета.

Если  указать  @ComponentScan  с  атрибутом  basePackages,  то  это  изменит  пакет  по умолчанию на указанный:

@ComponentScan(basePackages =

               \"com.baeldung.componentscan.springapp.animals\")

@Configuration

public class SpringComponentScanApp {

   // ...

}

Если указать @ComponentScan с атрибутом excludeFilters, тоэтопозволитиспользовать фильтр и исключить ненужные классы из процесса сканирования:

@ComponentScan(excludeFilters =

    @ComponentScan.Filter(type=FilterType.REGEX,

pattern=\"com\\.baeldung\\.componentscan\\.springapp\\.flowers\\..*\"))


Предыдущий вопрос: 16. Расскажите про аннотацию @Conditional

Следующий вопрос: 18. Расскажите про аннотацию @Profile

Все вопросы по теме: список

Все темы: список

Вопросы/замечания/предложения/нашли ошибку: напишите мне

Report Page