spring数据 - 在自定义默认存储库实现中获取bean

时间:2018-01-09 09:31:33

标签: spring spring-boot spring-data spring-data-commons

我正在尝试将我的项目从spring-boot-1.4.3.RELEASE升级到spring-boot-1.5.9.RELEASE

1.4.3.RELEASE我使用自定义存储库实现的方式如下:

  1. 制作了一个扩展MyCustomRepositroy
  2. 的界面JpaRepository
  3. 有一个实现MyCustomRepositoryImplMyCustomRepositroy的课程SimpleJpaRepository。在那堂课中,我改变了郎的行为 savefinddelete方法,因为我需要一个 特定类型实体的ceratin行为(假设我需要一个 实现save接口的所有实体的自定义Special
  4. 我做了一个MyCustomJpaRepositoryFactoryBean,扩展了JpaRepositoryFactoryBean。在那家工厂,我已经覆盖了createRepositoryFactory并将其MyRepositoryFactory实施了。 在MyRepositoryFactory实现中,我覆盖了getTargetRepositorygetRepositoryBaseClass。在这些方法中,我检查实体是否为Special类型,如果是,我返回{ {1}},否则我会返回MyCustomRepositoryImpl
  5. 另外,我可以在我的SimpleJpaRepository类中获取beanFactory,因为我通过MyCustomRepositoryImpl调用我自己的MyCustomRepositoryImpl构造函数,它也有一个beanFactory参数。

    现在,使用新版本(使用getTargetRepositoryViaReflection),我无法覆盖Factory类,因此无法决定每个权限给出哪个实现,并且无法获取beanFactory。 / p>

    有什么方法可以得到我想要的东西吗?

    对不起,我不能在这里发布我的代码。

    PS - 我的项目是一个基于Spring的库,所以我不能对实体做任何事情,因为我的客户声明它们,我知道有些实体实现了spring-data-commons-1.13.9.RELEASE接口而有些实体没有

1 个答案:

答案 0 :(得分:0)

我想弄清楚1.5.9.RELEASE中发生了什么,但与此同时,就像一个fyi - 1.5.6.RELEASE正常工作。

尝试从1.5.6.RELEASE更新到1.5.9.RELEASE

时遇到同样的问题