Mil*_*ind 1 jpa mongodb spring-data spring-data-jpa
在Spring Data项目中,如果我正在使用多种类型的存储库,即JPA存储库和Mongo存储库,并且如果我要扩展,CrudRepository
那么Spring Data如何知道为该存储库选择哪个存储?它可以使用JPA或Mongo。它是基于在每个持久实体上添加的注释@Document还是@Entity?
仅由于您的配置设置,才决定存储为Spring Data存储库接口创建的代理的决定。假设您具有以下配置:
@Configuration
@EnableJpaRepositories("com.acme.foo")
@EnableMongoRepositories("com.acme.foo")
class Config { }
Run Code Online (Sandbox Code Playgroud)
com.acme.foo
由于MongoDB和JPA基础结构都检测到包中的接口,因此在某些时候这会爆炸。为了解决这个问题,JavaConfig和XML支持都允许您定义包含和排除过滤器,以便您可以使用命名约定,其他注释等:
@Configuration
@EnableJpaRepositories(basePackages = "com.acme.foo",
includeFilters = @Filter(JpaRepo.class))
@EnableMongoRepositories(base Packages = "com.acme.foo",
includeFilters = @Filter(MongoRepo.class))
class Config { }
Run Code Online (Sandbox Code Playgroud)
在这种情况下,这两个注释@JpaRepo
和@MongoRepo
(将由您创建)将用于通过注释相关的存储库接口来有选择地触发检测。
真正的自动检测是不可能的,因为很难仅从存储库接口声明中分辨出您要定位的商店,并且在创建Bean定义的时间点,我们甚至都不知道任何其他基础架构(EntityManager
等)。
归档时间: |
|
查看次数: |
1476 次 |
最近记录: |