0

我正在开发基于 Jersey 的 RESTful Web 服务。而且,我正在为存储库层选择 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,我无法弄清楚如何应用上述类似配置,因为没有存储库接口的实现类。

任何帮助将不胜感激。谢谢你。

4

1 回答 1

1

我个人会选择 Spring Data,因为 Jersey/HK2 已经有一个 Spring 集成模块。这将允许您将任何 Spring bean 注入您的 Jersey 资源中。Spring Data 存储库是一个 Spring bean,注入工作无缝;无需使用 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 项目和 Jersey。它显示了使用 Java 配置和 XML 配置的一些不同示例。

2) 配置 Spring/Data bean。

这将是您的正常配置,假设您之前使用 Spring 完成了数据配置。这将包括配置 JPA 供应商、事务管理器和数据源。

3)将您的存储库注入您的泽西资源并享受。

你可以在这个GitHub Repo中找到一个完整的例子

于 2017-09-23T19:01:06.110 回答