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