Component Scanning
Не регистрировать каждый класс вручную
Когда beans десятки или сотни, перечислять каждый из них в конфигурации неудобно. Component Scanning позволяет Spring пройти по указанным пакетам, найти подходящие классы и автоматически зарегистрировать их в контейнере.
@Configuration
@ComponentScan("com.example.app")
class AppConfig {
}
@Service
class OrderService {
}
При создании контекста Spring сканирует пакет com.example.app
и его подпакеты. OrderService будет найден как компонент
и станет bean контейнера.
Стереотипные аннотации
Базовая аннотация — @Component.
Аннотации @Service, @Repository
и @Controller являются более смысловыми вариантами для разных ролей класса.
Для чтения кода это полезный сигнал: по аннотации сразу видно назначение компонента.
Component Scanning хорошо подходит для собственных классов приложения. Но иногда нужно зарегистрировать объект сторонней библиотеки или создать bean нестандартным способом. Для этого удобнее явная Java-конфигурация — её разберём дальше.