Пользовательский репозиторий и не реализованная часть - PullRequest
0 голосов
/ 09 июля 2019

В элементах 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

...