Инъекция зависимостей HK2 для данных DeltaSpike или Spring Data JPA

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

Данные DeltaSpike:

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

Spring Data 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, так как нет класса реализации для интерфейса репозитория.

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

1 ответ

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

1) Добавьте зависимость джерси-пружины.

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

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

2) Настройте бины Spring/Data.

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

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

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

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