Витрина весенних данных

Я пытаюсь понять весенний проект данных 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

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

2 ответа

Решение

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

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

Цель Spring Data состоит в том, чтобы уменьшить объем стандартного кодирования (средства для уменьшения повторения кода).
Для базовых методов, таких как save, найдите, что реализация предоставит spring, а spring создаст bean-компоненты (Objetcs) для этих интерфейсов.
Чтобы сообщить весне, что это мои репозитории внутри этого пакета, мы пишем @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.

Другие вопросы по тегам