所以,我有一个在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?
答案 0 :(得分:0)
当前实施不允许JpaRepositoryFactoryBean
的配置,因为可以从the code where it gets instantiated看到。
所以我猜您有以下选择:
重新实现实例化过程。
以可重复使用的方式执行2.和1.并将结果作为问题的PR提交。
答案 1 :(得分:0)
在尝试解决此问题时,我发现自定义impl未被捕获。然而,在这个问题中建议的解决方案帮助了我:https://stackoverflow.com/a/38541669/188624
基本上是使用Java8默认接口方法来提供附加功能。我不得不使用" CDI.current()。select"获取实体经理的方法虽然因为财产注入当然不会起作用。
我使用Spring Data JPA 2.0.0测试