2017-10-09 119 views
1

因此,我有一個運行在WildFly10上的應用程序,該應用程序使用JSF,Spring(DI),JPA,Spring Data; 現在我們正試圖將其移動到CDI並刪除Spring(DI)。現在我們將保留Spring Data。如何在CDI環境中設置彈簧數據的自定義行爲

因此,我設置了CDI並創建了一個EntityManager生產者。

@Produces 
@Dependent 
@PersistenceContext 
public EntityManager entityManager; 

所以,我能夠注入與CDI和所有的存儲庫。 但是對我原先的環境,我們有一個自定義庫的工廠,在我SpringConfiguration定義像這樣的:

@EnableJpaRepositories(basePackages = { 「com.foo.repository」},repositoryFactoryBeanClass = CustomJpaRepositoryFactoryBean.class

所以,問題是,如何在CDI環境中定義此repositoryFactoryBeanClass = CustomJpaRepositoryFactoryBean.class?

回答

0

the code where it gets instantiated可以看出,目前的實現不允許配置JpaRepositoryFactoryBean

所以我猜你有以下幾種選擇:

  1. 重新實現實例化過程。

  2. open a feature request

  3. 做2和1以可重用的方式,並提交結果作爲公關的問題。

0

當試圖解決這個問題時,我發現自定義impl沒有被拾起。然而,在這個問題中提出的解決方案幫助我:https://stackoverflow.com/a/38541669/188624

基本上是使用Java8默認接口方法來提供附加功能。我不得不使用「CDI.current()。select」方法來獲得實體管理器,儘管屬性注入當然不起作用。

我使用Spring Data JPA 2.0.0測試了