如何在CDI环境中设置spring数据的自定义行为

时间:2017-10-09 19:07:23

标签: java spring-data-jpa cdi

所以,我有一个在WildFly10上运行的应用程序,它使用JSF,Spring(DI),JPA,Spring Data; 现在我们正试图将其转移到CDI并删除Spring(DI)。现在我们将保留Spring Data。

所以,我设置了CDI并创建了一个EntityManager生成器。

@Produces
@Dependent
@PersistenceContext
public EntityManager entityManager;

所以,我能够用CDI和所有注入存储库。 但是在我的原始环境中,我们有一个自定义存储库工厂,在我的SpringConfiguration中定义了这样:

@EnableJpaRepositories(basePackages = {“com.foo.repository”}, repositoryFactoryBeanClass = CustomJpaRepositoryFactoryBean.class

所以,问题是,如何在CDI环境中定义此repositoryFactoryBeanClass = CustomJpaRepositoryFactoryBean.class?

2 个答案:

答案 0 :(得分:0)

当前实施不允许JpaRepositoryFactoryBean的配置,因为可以从the code where it gets instantiated看到。

所以我猜您有以下选择:

  1. 重新实现实例化过程。

  2. 打开feature request

  3. 以可重复使用的方式执行2.和1.并将结果作为问题的PR提交。

答案 1 :(得分:0)

在尝试解决此问题时,我发现自定义impl未被捕获。然而,在这个问题中建议的解决方案帮助了我:https://stackoverflow.com/a/38541669/188624

基本上是使用Java8默认接口方法来提供附加功能。我不得不使用" CDI.current()。select"获取实体经理的方法虽然因为财产注入当然不会起作用。

我使用Spring Data JPA 2.0.0测试