2016-01-30 2 views
0
@Repository 
public interface userRepository extends JpaRepository<User, Long> { 

} 

Существует много сайтов, показывающих этот способ создания DAO весной 4 с использованием JpaRepository. @Repository также создает экземпляр так же, как @Component, @Service т.д. Контейнер внутренне бобов с помощью new оператора, тогда как компонент сканирования (с использованием @Component аннотацию сканирования) классов, имеющих аннотацию, @Component@Service и т.д. Тогда как контейнер для создания экземпляра @Repository, как показано выше, как это интерфейс, который является чисто абстрактным, и мы не можем создать экземпляр для интерфейса с использованием нового оператора.@Repository весной 4

+0

Это не простая весна, а весна данных, а конкретная весна данных JPA. –

ответ

0

Spring создаст экземпляр SimpleJpaRepository для объявленных интерфейсов, которые расширяют JpaRepository.
Примечание: происходит гораздо больше волшебства. Вы можете добавить свои собственные запросы через @Query в интерфейс, а репозитории также поддерживают управление транзакциями. Чтобы добиться того, что репозиторий будет завернут в прокси-сервер, который может перехватывать и динамически реализовывать свои методы.

+0

Ну, ни одна весна не создаст ничего, Spring Data JPA создаст это и добавит поведение. –

+0

Он говорил о JpaRepository, так что это явно подразумевалось. И Spring Data JPA является частью Spring, так что я сказал правду. – Cyril

+0

Зависит от того, что вы определяете как Spring, Spring для большинства людей - это Spring Framework, и это только то, что не включает Spring Data и любой другой проект портфолио. Также не было помечено сообщение, и вопрос указывал на Spring, а не на Spring Data JPA. Независимо от того, что все же лучше быть явным, тогда принимайте предположение, что вещи подразумеваются. –

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