Spring аннотации @Repository и @Service
В чем преимущества использования @Repository и @Service?
Не говорите мне о сканировании компонентов и т.д., я с нетерпением жду каких-то дополнительных преимуществ или функций, которые есть, если они вообще есть.
что произойдет, если я его не использую? что я буду скучать?
Ответы
Ответ 1
Есть несколько причин:
Ответ 2
Аннотация @Repository
(введенная в Spring 2.0) и @Service
аннотация (введенная в Spring 2.5) является специализацией аннотации @Component
.
Основным преимуществом использования @Repository
или @Service
над @Component
является то, что он легко записывает pointcut AOP, который нацелен, например, на все классы, аннотированные с помощью @Repository
.
Кроме того, специализированные аннотации помогают четко разграничить уровни приложений (в стандартном 3-уровневом приложении).
Ответ 3
Я считаю, что есть две вещи, о которых говорилось Spring, когда они добавили эти аннотации компонентов.
- Они могут использоваться для указания точечных сокращений по всем объектам, аннотированным этим подкомпонентом. (Все @Repository или все точки ссылки @Service)
- Я думаю, что Spring также упомянул, что они будут добавлять к ним некоторые будущие функции. (У меня нет ссылки на это, я просто думаю, что я где-то читал)
Ответ 4
Если вы TDD, было бы полезно тщательно спроектировать (тест, конечно) @Services, потому что они будут полезны для полной инъекции всех @Автоматизированные компоненты, которые вы определили.
Вы можете реализовать свои функции непосредственно в @Controller, например, но в этом случае тестирование будет сложнее, и вам нужно будет определить все макетные элементы (довольно просто в Springframework 3.1, но все же "плохой дизайн" ).
Ответ 5
Использование аннотаций @Repository
и @Service
важно с точки зрения подключения к базе данных.
Используйте @Service
для всех типов подключений к веб-сервису
Используйте @Repository
для всех сохраненных подключений proc DB
Если вы не используете соответствующие аннотации, вы можете столкнуться с исключениями, отмененными транзакциями отката. Вы увидите исключения во время теста нагрузочной нагрузки, связанные с откатными транзакциями JDBC.
Ответ 6
Преимущество стереотипа @Repository в Spring
-
@Repository также является @Component, и поэтому вы можете использовать сканирование компонентов для автоматического обнаружения вашего @Repository аннотированного beans и зарегистрировать их в ApplicationContext.
-
Будет получен автоматический перевод исключений, а не только регистрация.
-
Исключения для всех исключений персистентности преобразуются в последовательную иерархию Spring DataAccessException, поэтому вам нужно всего лишь обрабатывать один вид исключения, даже если вы используете несколько стратегий (часто вы смешиваете hibernate/jpa с простым jdbc)
-
Не нужно настраивать.