Компонент Scan в контексте JavaEE (часто в реализации CDI или EJB) отвечает за поиск управляемых компонентов (Managed Beans, EJBs) в приложении. Он сканирует указанные пакеты или архивы на наличие классов с определенными аннотациями, которые указывают на то, что эти классы являются компонентами, управляемыми контейнером (например, @ApplicationScoped, @RequestScoped, @Stateless, @Stateful).
В Spring Framework аналогичная функциональность реализована через @ComponentScan, который ищет бины (компоненты Spring) с аннотациями типа @Component, @Service, @Repository, @Controller и регистрирует их в контексте приложения.
Задача Scan — автоматическое обнаружение и регистрация компонентов, что упрощает конфигурацию и уменьшает количество boilerplate-кода.
Пример в Spring:
java
Пример в JavaEE с beans.xml:
xml
(Закомментировано, так как не является валидным синтаксисом XML внутри блока кода)
В таблице можно сравнить подходы:
| Фреймворк | Механизм Scan | Аннотации для компонентов | Файл конфигурации (опционально) |
|---|---|---|---|
| Spring | @ComponentScan | @Component, @Service, @Repository, @Controller | Java config class or XML |
| JavaEE | CDI (bean discovery) | @ApplicationScoped, @RequestScoped, @Stateless, @Stateful | beans.xml |