【发布时间】:2019-03-25 12:27:45
【问题描述】:
我正在尝试建立一个具有两个数据源的项目,一个是 MongoDB,另一个是 Postgres。我对不同包中的每个数据源都有存储库,并且我将我的主类注释如下:
@Import({MongoDBConfiguration.class, PostgresDBConfiguration.class})
@SpringBootApplication(exclude = {
MongoRepositoriesAutoConfiguration.class,
JpaRepositoriesAutoConfiguration.class
})
public class TemporaryRunner implements CommandLineRunner {
...
}
MongoDB配置:
@Configuration
@EnableMongoRepositories(basePackages = {
"com.example.datastore.mongo",
"com.atlassian.connect.spring"})
public class MongoDBConfiguration {
...
}
PostgresDB配置:
@Configuration
@EnableJpaRepositories(basePackages = {
"com.example.datastore.postgres"
})
public class PostgresDBConfiguration {
...
}
即使我指定了documentation 中描述的基本包,我仍然会在控制台中收到这些消息:
13:10:44.238 [main] [] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode!
13:10:44.266 [main] [] INFO o.s.d.r.c.RepositoryConfigurationExtensionSupport - Spring Data MongoDB - Could not safely identify store assignment for repository candidate interface com.atlassian.connect.spring.AtlassianHostRepository.
我设法通过使用 MongoRepository 和 JpaRepository 为我的所有存储库解决了这个问题,但是 AtlassianHostRepository 来自外部库,它是一个常规的 CrudRepository(这完全有道理,因为库的使用者可以决定他将使用哪种类型的数据库喜欢用)。无论如何,看起来我指定的 basePackages 被完全忽略并且没有以任何方式使用,即使我仅在 @EnableMongoRepositories Spring Data 中指定了 com.atlassian.connect.spring 包,Spring Data 不知何故无法弄清楚哪些数据应该使用模块。 难道我做错了什么?有没有其他方法可以告诉 spring data 在不更改 AtlassianHostRepository.class 本身的情况下将 mongo 用于 AtlassianHostRepository?
【问题讨论】:
标签: spring-boot spring-data-jpa spring-data spring-data-mongodb