Подтвердить что ты не робот

Spring аннотации @Repository и @Service

В чем преимущества использования @Repository и @Service?

Не говорите мне о сканировании компонентов и т.д., я с нетерпением жду каких-то дополнительных преимуществ или функций, которые есть, если они вообще есть.

что произойдет, если я его не использую? что я буду скучать?

4b9b3361

Ответ 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)

  • Не нужно настраивать.