DevOps trainee
Чем отличается @Component, @Service, @Repository, @Controller?
Ответ
Технически — все создают бин (синглтон по умолчанию). Семантически разные: @Repository — слой доступа к данным, Spring дополнительно оборачивает SQL/JPA исключения в DataAccessException. @Service — бизнес-логика, @Controller — веб-слой. Все они специализации @Component.
Разбор: Все четыре аннотации — специализации @Component: технически создают бин-синглтон, а различаются семантикой слоёв и небольшими добавками, главная из которых — трансляция исключений persistence в DataAccessException у @Repository. Ловушки: все по умолчанию синглтоны (а не прототипы), @Repository не открывает транзакцию сам, а @Controller без @ResponseBody/@RestController не сериализует тело автоматически.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.