❓ В чём разница между @Component, @Service и @Repository в Spring?
Все три аннотации делают класс
Spring-бином, но различаются по
семантике:
—
@Component:
базовая аннотация, универсальный бин без конкретной роли.—
@Service:
указывает, что класс содержит бизнес-логику. Используется для читаемости и логической группировки.—
@Repository:
помечает DAO-слой (доступ к данным). Плюс Spring автоматически оборачивает методы в блок try-catch для DataAccessException.⚠️ Разница не в
функциональности, а в
намерении разработчика. Spring их обрабатывает по-разному только для
@Repository (например, при работе с
базой данных).