【问题标题】:HK2 Dependency Injection for DeltaSpike Data or Spring Data JPADeltaSpike 数据或 Spring Data JPA 的 HK2 依赖注入
【发布时间】:2023-03-13 18:57:01
【问题描述】:

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

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

【问题讨论】:

    标签: dependency-injection jersey spring-data-jpa hk2 deltaspike


    【解决方案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 组件中。另见Combining Spring project and Jersey。它显示了使用 Java 配置和 XML 配置的一些不同示例。

    2) 配置 Spring/Data bean。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-22
      • 2015-11-03
      • 2012-08-15
      相关资源
      最近更新 更多