Spring Data Solr витрина

Я пытаюсь понять проект демонстрации весенних данных solr.

https://github.com/christophstrobl/spring-data-solr-showcase

Потратив довольно много времени, я не смог найти, как productRepository реализован и внедрён в https://github.com/christophstrobl/spring.-data-solr-showcase/blob/master/src/main/java/org/springframework/data/solr/showcase/product/ProductServiceImpl.java

@Service class ProductServiceImpl implements ProductService { 
private static final Pattern IGNORED_CHARS_PATTERN = Pattern.compile("\\p{Punct}"); 
private ProductRepository productRepository;


@Autowired
public void setProductRepository(ProductRepository productRepository) {
    this.productRepository = productRepository;
}

ProductRepository определяется как интерфейс (https://github.com/christophstrobl/spring-data-solr-showcase/blob/master/src/main/java/org/springframework/data/solr/showcase/product/ProductRepository.java), и я не нашел кода, реализующего этот интерфейс.

interface ProductRepository extends SolrCrudRepository<Product, String> {

    @Highlight(prefix = "<b>", postfix = "</b>")
    @Query(fields = { SearchableProductDefinition.ID_FIELD_NAME, 
                      SearchableProductDefinition.NAME_FIELD_NAME,
                      SearchableProductDefinition.PRICE_FIELD_NAME, 
                      SearchableProductDefinition.FEATURES_FIELD_NAME,
                      SearchableProductDefinition.AVAILABLE_FIELD_NAME }, 
           defaultOperator = Operator.AND)
    HighlightPage<Product> findByNameIn(Collection<String> names, Pageable page);

    @Facet(fields = { SearchableProductDefinition.NAME_FIELD_NAME })
    FacetPage<Product> findByNameStartsWith(Collection<String> nameFragments, Pageable pagebale);
}

Ниже показано, как настраивается контекст Spring: https://github.com/christophstrobl/spring-data-solr-showcase/blob/master/src/main/java/org/springframework/data/solr/showcase/Application.java

Если бы кто-нибудь мог указать мне направление, в котором этот интерфейс реализован и внедрен, это было бы здорово.


person Srik    schedule 04.12.2014    source источник


Ответы (2)


В витрине используются абстракции репозитория Spring Data, использующие производные запросы от имени метода. Таким образом, инфраструктура, предоставляемая Spring Data, и модуль Solr позаботятся о создании необходимых реализаций для вас. Ознакомьтесь с справочной документацией. для более подробного объяснения.

Сама демонстрация построена таким образом, что позволяет вам пройти несколько этапов разработки, взглянув на переход от одного шага к другому. Итак, взглянув на шаг 2, вы узнаете, как использовать Реализация пользовательского репозитория, в то время как Шаг 4 демонстрирует, как включить выделение с помощью @Highlight.

person Christoph Strobl    schedule 05.12.2014
comment
из первых уст... Спасибо за ответ. - person Srik; 05.12.2014

Цель Spring Data — уменьшить объем стандартного кодирования (значит уменьшить количество повторений кода).
Для основных методов, таких как save, найдите реализацию, которую предоставит Spring, и Spring создаст bean-компоненты (объекты) для этих интерфейсов.
Чтобы сообщить Spring, что это мои репозитории внутри этого пакета, мы пишем @EnableJpaRepositories(basePackeges="com.spring.repositories") или <jpa:repositories base-package="com.acme.repositories"/> для репозиториев JPA
Для репозиториев solr мы должны написать @EnableSolrRepositories(basePackages="com.spring.repositories" или <solr:repositories base-package="com.acme.repositories" /> Spring создаст объекты для этих интерфейсов, мы можем внедрить эти объекты интерфейса, используя аннотацию @Autowire.

Example:
 @Service
 Pulic class SomeService{
     @Autowire
     private SampleRepository;

     /*  @postConstruct annotation is used to execute method just after creating bean 
          and injecting all dependencies by spring*/
     @PostConstruct
     public void postConstruct(){
          System.out.println("SampleRepository implementation class name"+ SampleRepository.getClass());
     }
 }

В приведенном выше примере показан класс реализации интерфейса SampleRepository (этот класс не определяется пользователем, это класс, предоставленный Spring).
Ссылка на справочную документацию http://docs.spring.io/spring-data/solr/docs/2.0.2.RELEASE/reference/html/.
Попробуйте прочитать эту простую документацию, чтобы получить больше информации о spring-data.

person Shankar kota    schedule 25.06.2016