В элементах BaseRepoistory и CustomRepository используется другой шаблон mongoTemplate. У меня есть две среды: database1, database2, для этого у меня есть два mongoTemplates, но когда я пытался использовать в настраиваемом хранилище, BaseRepository использует database1 mongoTemplate, а CustomRepository использует database2 mongoTemplate, даже если они настраиваются для использования database2 mongoTemplate,
У меня есть две нижеуказанные конфигурации, одна для базы данных1, а другая для базы данных2:
@Configuration(value = "long-database1")
@EnableMongoRepositories(
basePackageClasses = { Database1Repository.class },
mongoTemplateRef = "database1MongoTemplate"
)
public class Database1MongoDbConfig extends AbstractMongoDbConfig {
public Database1MongoDbConfig() {
super("mongo.database1"); //property name of database
}
@Override
@Bean(name="database1MongoTemplate")
public MongoTemplate mongoTemplate() throws Exception {
return super.mongoTemplate();
}
@Override
@Bean(name="database1MongoDbFactory")
public MongoDbFactory mongoDbFactory() throws Exception {
return super.mongoDbFactory();
}
@Bean
public Database1RepositoryCustom database1RepositoryImpl(@Qualifier("database1MongoTemplate") MongoTemplate database1MongoTemplate) throws Exception{
return new DatabaseRepositoryImpl(database1MongoTemplate);
}
}
@Configuration(value = "long-database2")
@EnableMongoRepositories(
basePackageClasses = { Database2Repository.class },
mongoTemplateRef = "database2MongoTemplate"
)
public class Database2MongoDbConfig extends AbstractMongoDbConfig {
public Database2MongoDbConfig() {
super("mongo.database1"); //property name of database
}
@Override
@Bean(name="database2MongoTemplate")
public MongoTemplate mongoTemplate() throws Exception {
return super.mongoTemplate();
}
@Override
@Bean(name="database2MongoDbFactory")
public MongoDbFactory mongoDbFactory() throws Exception {
return super.mongoDbFactory();
}
@Bean
public Database2RepositoryCustom database2RepositoryImpl(@Qualifier("database2MongoTemplate") MongoTemplate database2MongoTemplate) throws Exception{
return new DatabaseRepositoryImpl(database2MongoTemplate);
}
}
@NoRepositoryBean
public interface DatabaseRepository extends MongoRepository<DisclaimerResponse, String>, DatabaseRepositoryCustom {
}
@Repository
public interface Database1Repository extends DatabaseRepository {
}
@Repository
public interface Database2Repository extends DatabaseRepository {
}
public class DatabaseRepositoryImpl implements DatabaseRepositoryCustom {
private final MongoTemplate mongoTemplate;
@Autowired
public DatabaseRepositoryImpl(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
...
}
Когда вы пытались получить экземпляр для любого хранилища, это может быть для database1 или database2, но часть BaseRepository всегда использует mongoTemplate для database1, а CustomRepository использует правильный mongoTemplate (это может быть database1 или database2 Шаблон монго в зависимости от конфигурации).
Это моя проблема, почему BaseRepository всегда использует репозиторий и почему он отличается от CustomRepositoryPart