Инъекция зависимостей 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