Вопрос проверяет понимание ролей стереотипных аннотаций Spring и механизма обработки исключений.
@Repository не только регистрирует бин, но и включает перевод исключений. Spring перехватывает низкоуровневые исключения доступа к данным и преобразует их в единый иерархический набор. Это упрощает обработку ошибок. Также аннотация логически обозначает слой доступа к данным. Благодаря этому код становится чище и понятнее.
Аннотация @Repository используется для классов, которые отвечают за доступ к данным, и несёт в себе дополнительное поведение.
@Repository — это стереотипная аннотация Spring, предназначенная для слоя доступа к данным, которая помимо регистрации бина включает механизм преобразования исключений.
@RepositorySpring перехватывает исключения, выброшенные JDBC или ORM.
Что происходит
SQLException
исключения Hibernate
преобразуются в DataAccessException
Почему это важно
единая иерархия исключений
код не зависит от конкретной технологии БД
Аннотация явно показывает роль класса в архитектуре.
Что это даёт
проще читать код
легче ориентироваться в проекте
проще поддерживать соглашения по слоям
@Repository участвует в AOP-механизмах.
Пример
транзакции
мониторинг
логирование
@Repository
public class UserRepository {
// работа с EntityManager или JdbcTemplate
}
@Repository важна не только как маркер бина, но и как точка включения перевода исключений и архитектурной дисциплины.