Внедрение зависимостей HK2 для данных DeltaSpike или Spring Data JPA

Я разрабатываю веб-службы RESTful на основе Джерси. И я выбираю между DeltaSpike Data и Spring Data JPA для своего уровня репозитория. Я пробовал оба из них. Я удивлен, что они почти одинаковы.

Данные DeltaSpike:

public interface AuthorRepository extends EntityRepository<Author, Long> {
}

Весенние данные JPA:

public interface AuthorRepository extends CrudRepository<Author, Long> {
}

Но моя проблема не в том, какой из них лучше, и я должен выбрать, а в том, как применить внедрение зависимостей HK2.

Создав вручную AuthorRepository и AuthorRepositoryImpl, я могу просто выполнить следующую конфигурацию:

public class ApplicationBinder extends AbstractBinder {

    @Override
    protected void configure() {
        bind(AuthorRepositoryImpl.class).to(AuthorRepository.class).in(RequestScoped.class);
    }
}

Но я не мог понять, как применить вышеописанную аналогичную конфигурацию, если я использую DeltaSpike Data или Spring Data JPA, поскольку для интерфейса репозитория нет класса реализации.

Любая помощь будет оценена. Спасибо.


person Julez    schedule 23.09.2017    source источник


Ответы (1)


Лично я бы выбрал Spring Data, так как в Jersey/HK2 уже есть модуль интеграции для Spring. Это позволит вам внедрить любые компоненты Spring в ресурсы Джерси. А репозиторий Spring Data, являющийся bean-компонентом Spring, инъекция работает без проблем; не нужно ничего настраивать с HK2/Jersey. Все, что вам нужно будет настроить, — это конфигурация данных для Spring. Чтобы заставить его работать, вам необходимо выполнить следующие шаги:

1) Добавьте зависимость jersey-spring.

<dependency>
    <groupId>org.glassfish.jersey.ext</groupId>
    <artifactId>jersey-spring3</artifactId>
    <version>${jersey2.version}</version>
</dependency>

Это даст вам интеграцию Spring/Jersey, что позволит вам внедрить ваши Spring bean-компоненты в ваши компоненты Jersey. См. также Объединение проекта Spring и Джерси. Он показывает несколько различных примеров использования как конфигурации Java, так и конфигурации XML.

2) Настройте bean-компоненты Spring/Data.

Это будет ваша обычная конфигурация, если вы уже выполняли настройку данных с помощью Spring. Это будет состоять из настройки поставщика JPA, диспетчера транзакций и источника данных.

3) Вставьте свой репозиторий в свой ресурс Джерси и наслаждайтесь.

Полный пример можно найти в этом GitHub Repo.

person Paul Samsotha    schedule 23.09.2017