我试图将我的项目从升级spring-boot-1.4.3.RELEASE
到spring-boot-1.5.9.RELEASE
.
1.4.3.RELEASE
我使用存储库的自定义实现的方式如下:
- 制作了一个
MyCustomRepositroy
扩展的接口JpaRepository
- 有一个
MyCustomRepositoryImpl
实现MyCustomRepositroy
和的类SimpleJpaRepository
。在那个类中,我改变了
of和方法的行为save
,因为我需要 特定类型的实体的特定行为(假设我需要为所有实现接口的实体自定义)find
delete
save
Special
- 我做了一个
MyCustomJpaRepositoryFactoryBean
延伸的JpaRepositoryFactoryBean
。在那个工厂,我已经重写createRepositoryFactory
并给了它我的MyRepositoryFactory
实现。在MyRepositoryFactory
实现中,我覆盖了getTargetRepository
, 和getRepositoryBaseClass
. 在这些方法中,我检查实体是否属于 typeSpecial
,如果是,则返回MyCustomRepositoryImpl
,否则返回SimpleJpaRepository
。
此外,我可以在我的MyCustomRepositoryImpl
类中获取 beanFactory,因为我调用我自己的构造函数,MyCustomRepositoryImpl
它也有一个 beanFactory 参数 via getTargetRepositoryViaReflection
。
现在,使用新版本(使用spring-data-commons-1.13.9.RELEASE
),我无法覆盖 Factory 类,因此无法为每个实体决定要提供哪个实现,也无法获取 beanFactory。
有什么办法可以得到我想要的吗?
对不起,我不能在这里发布我的代码。
PS - 我的项目是一个基于弹簧的库,所以我不能对实体做任何事情,因为我的客户声明了它们,我只知道有些实体实现了Special
接口,有些没有