Для чего используются @Repository и @Autowired. (Spring)

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

одной темой была инъекция зависимостей и spring beans я выяснил окончание =)

теперь я путаюсь с двумя аннотациями @Autowired и @Repository. Первое Что означает Autowiring? тогда Почему я должен использовать их и какова разница между их использованием и не использованием?

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

спасибо...

Ответ 1

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

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

Ответ 2

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

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

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

Ответ 3

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

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