2015-08-21 4 views
1

Я пошел ниже учебники для использования couchbase БД с помощью SpringSpring Project Data - Couchbase Интеграция

http://projects.spring.io/spring-data-couchbase/#quick-start

Я вижу ниже автоматической проводки в классе обслуживания. UserRepository - это интерфейс. Я предполагаю, что должна быть реализация, которая реализует этот интерфейс и подвергается воздействию компонента. Я не вижу ни одного класса, реализующего этот интерфейс, или не будучи выставленным в виде компонента. Можно ли помочь объяснить, как это работает?

@Autowired 
public MyService(UserRepository userRepository) { 
    this.userRepository = userRepository; 
} 

ответ

2

Цель проекта Spring-Data - создать такие реализации во время выполнения для вас, когда вы определяете только интерфейсы.

Он проверит пакеты, которые вы настроили для сканирования через отражение, и обнаружите в них интерфейсы xxRepository, после чего он будет использовать базовый класс, предоставленный подпроектом Spring Data под вашим проектом (здесь Couchbase), чтобы сплести конкретную реализацию xxRepository и ввести его.

+0

Спасибо, Саймон! В этом сценарии UserRepository расширяет CrudRepository <Пользователь, String>. Весна смотрит на базовый интерфейс и переплетает соответствующую конкретную реализацию? Все примеры, которые я видел, расширяют CrudRepository. Есть ли какая-либо польза в распространении этого или его можно использовать как есть? –

+0

Главным преимуществом расширения является то, что вы можете определять свои собственные методы помимо сохранения, удаления и т. Д. Либо с вашей собственной реализацией, либо с весной можно получить какую-либо форму запроса из некоторых имен методов (поиск «запрос») –

+0

Запрос вывод для couchbase является лишь частью весенних данных couchbase 2.0, в настоящее время в предварительном просмотре –

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