2010-10-21 5 views
15

Я изучаю java в течение 3 месяцев, а иногда Я не могу понять цель использования чего-то.Что такое @Repository и @Autowired. (Весна)

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

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

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

спасибо ...

+0

Эти аннотации являются весенними аннотациями, Autowired означает, что контекст Ioc автоматически добавит зависимости, если это возможно, и хранилище, которое, как я считаю, является стереотипом, поэтому вы можете добавить к нему переписывание Исключения и другие связанные с ним компоненты, связанные с получением данных. Добавьте тег весны на свой пост, и вы можете получить еще несколько ответов! –

ответ

27

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

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

+0

, поэтому хранилище не предоставляет никаких функций, я прав? Что означает роль? для @controller происходит что-то, когда мы используем его, что происходит, когда мы используем репозиторий? – mehmet6parmak

+2

Фактически это делает аннотированный класс подходящим для перевода DataAccessException. – Bogdan

+0

@Bogdan FYI: Эта ссылка не работает. – Eldelshell

0

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

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

0

@Autowired и @ У репозитория разные цели.
@Autowired: относится к инъекции зависимостей, эталонная переменная должна быть введена с помощью @Autowired аннотации. Должен быть класс «bean», определенный для ввода этой конкретной ссылочной переменной. Hibernate проверит аннотированные классы Beans или @Component и добавит ссылочную переменную @Autowired, так как тип/имя/конструктор совпадают.

@Repository: о классе DAO, где вы пишете код для выполнения операций с базами данных, как запросы HQL, за исключением()/сохраняться()/обновление() и т.д. Так как вы аннотировать класс @Repository, он говорит в спящем режиме это класс DAO и рассматривать его как класс DAO. Означает, что он делает исключенные исключения (брошенные из методов DAO), подходящие для перевода в Spring DataAccessException.

Смежные вопросы