使用 Spring 数据 Mongo 配置多个 MongoDB 存储库
Configure Multiple MongoDB repositories with Spring Data Mongo
我有 2 个 Mongodb 数据库连接到带有 2 个 MongoTemplate-s 的 Spring 引导应用程序:
mongoTemplate(默认bean名称,连接到默认数据库)
mongoAppTemplate(在 运行 时间连接到另一个数据库)
我有很多使用 mongoTemplate 的 MongoRepository-s,但我也想创建一些使用 mongoAppTemplate 的。
如何配置 2 个 MongoRepository-s 以使用具有 Java 配置的不同 MongoTemplate -s?
我找到了一种使用 XML 的方法(下面的 link),但我真的想保留所有基于注释的方法
Spring-data-mongodb connect to multiple databases in one Mongo instance
基本思想是将包含您的存储库的包层次结构分成两个不同的路径:
- com.whatever.repositories.main 主数据库存储库接口包
- com.whatever.repositories.secondary 其他数据库存储库接口的包
您的 XML 配置应该是这样的:
<mongo:repositories base-package="com.whatever.repositories.main" mongo-template-ref="mongoTemplate"/>
<mongo:repositories base-package="com.whatever.repositories.secondary" mongo-template-ref="mongoAppTemplate"/>
编辑
@EnableMongoRepositories注解不是@Repeatable
,但是你可以有两个@Configuration
classes,每个都用@EnableMongoRepositories
注解,以达到相同的效果使用注释:
@Configuration
@EnableMongoRepositories(basePackages = "com.whatever.repositories.main", mongoTemplateRef = "mongoTemplate")
public class MainMongoConfig {
....
}
@Configuration
@EnableMongoRepositories(basePackages = "com.whatever.repositories.secondary", mongoTemplateRef = "mongoAppTemplate")
public class SecondaryMongoConfig {
....
}
第三个 @Configuration
注释 class 其中 @Import
另外两个
我有 2 个 Mongodb 数据库连接到带有 2 个 MongoTemplate-s 的 Spring 引导应用程序:
mongoTemplate(默认bean名称,连接到默认数据库)
mongoAppTemplate(在 运行 时间连接到另一个数据库)
我有很多使用 mongoTemplate 的 MongoRepository-s,但我也想创建一些使用 mongoAppTemplate 的。
如何配置 2 个 MongoRepository-s 以使用具有 Java 配置的不同 MongoTemplate -s?
我找到了一种使用 XML 的方法(下面的 link),但我真的想保留所有基于注释的方法
Spring-data-mongodb connect to multiple databases in one Mongo instance
基本思想是将包含您的存储库的包层次结构分成两个不同的路径:
- com.whatever.repositories.main 主数据库存储库接口包
- com.whatever.repositories.secondary 其他数据库存储库接口的包
您的 XML 配置应该是这样的:
<mongo:repositories base-package="com.whatever.repositories.main" mongo-template-ref="mongoTemplate"/>
<mongo:repositories base-package="com.whatever.repositories.secondary" mongo-template-ref="mongoAppTemplate"/>
编辑
@EnableMongoRepositories注解不是@Repeatable
,但是你可以有两个@Configuration
classes,每个都用@EnableMongoRepositories
注解,以达到相同的效果使用注释:
@Configuration
@EnableMongoRepositories(basePackages = "com.whatever.repositories.main", mongoTemplateRef = "mongoTemplate")
public class MainMongoConfig {
....
}
@Configuration
@EnableMongoRepositories(basePackages = "com.whatever.repositories.secondary", mongoTemplateRef = "mongoAppTemplate")
public class SecondaryMongoConfig {
....
}
第三个 @Configuration
注释 class 其中 @Import
另外两个