для чего используются @Repository и @Autowired. (Весна) - PullRequest
19 голосов
/ 21 октября 2010

Я изучаю Java в течение 3 месяцев, и иногда я не могу понять цель использования чего-либо.

одной темой было внедрение зависимостей и пружинных бобов, я понял, наконец =)

сейчася перепутал две аннотации @Autowired и @Repository.Во-первых, что означает автопроводка?тогда зачем мне их использовать и в чем разница между их использованием и неиспользованием?

Также сегодня я попытался использовать hibernate в весеннем проекте MVC, и мне пришлось искать около 15 (причина класса не найденошибки) jar-файлы из-за зависимостей других jar-файлов, используемых в проекте.это должно быть так?это делает изучение Java очень трудным для начинающих

спасибо ...

Ответы [ 3 ]

34 голосов
/ 21 октября 2010

@ Репозиторий - это аннотация, которая помечает определенный класс как объект доступа к данным, таким образом, разъясняя его роль.Другими маркерами той же категории являются @Service и @ Controller

@ Autowired - это аннотация совершенно другого значения: в основном она указывает контейнеру DI на внедрение зависимости.Больше информации на http://apollo89.com/java/spring-framework-2.5.3/api/org/springframework/beans/factory/annotation/Autowired.html
Редактировать Больше информации на учебная точка
или docs.spring.io

7 голосов
/ 09 ноября 2017

Обе аннотации имеют разные цели для использования.

@Autowired: Это то же самое, что <bean="xyz" autowire="byType">, который вы определяете в файле конфигурации.Ссылочная переменная (зависимость), аннотированная @Autowired, будет внедрена контейнером Spring, так как любой соответствующий @Bean найден в классе @Configuration.
Плюс классы, аннотированные @Component, @Service, @Repository, тоже рассматриваются какбины, поэтому их объекты вставляются в соответствующие зависимости.Контейнер Spring сканирует компоненты в классах, которые вы упомянули для "component-scan" или @ComponentScan ("xyz").

@Repository: Это также аннотация Spring-Framework.Когда вы аннотируете класс @Repository, контейнер Spring понимает, что это класс DAO, и преобразует все непроверенные исключения (генерируемые из методов DAO) в Spring DataAccessException.Класс DAO - это класс, в котором вы пишете методы для выполнения операций над БД.

0 голосов
/ 07 октября 2015

@ Autowired и @Repository - это очень разные понятия. 1. @ Repository: это определение класса, который будет репозиторием. В общем случае вы можете использовать просто @Component, но для конкретного определения есть еще 3 аннотации, такие как Controller, service и repository.Mainly 2 преимущества: 1. Если вы определили (context: component-scan) в servlet.xml, чтобы отсканировать определенный пакет и найти его к весне. 2. Дополнительные преимущества, которые вы получаете от Spring, такие как перевод ошибок доступа к базе данных, поэтому он в основном определяется для использования с классом, в котором вы соединяетесь с базой данных либо с помощью hibernate, либо с помощью jdbc.

@ Autowired: внедрить зависимость во время выполнения к весне, значит в классе, автоматически связать объект и использовать его, поэтому этот bean-компонент будет автоматически создан без определения в xml-файле

...