Несколько мес go без репозитория при весенней загрузке - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь настроить два монго в своей весенней загрузке. Но всегда подбирает только один, вот мой код.

Пн go 1 конфигурация

@Configuration
public class MongoOneConfiguration extends AbstractMongoConfiguration {

    @Override
    @Bean(name = "mongoOneClient")
    public MongoClient mongoClient() {
        return new MongoClient(new ServerAddress(mongoOnehostname, mongoOnehostport), 
                new MongoClientOptions.Builder()
                    .connectTimeout(mongoOneConnTimeoutMillis)
                    .build());
    }

    @Override
    public String getDatabaseName() {
        return mongoOneDatabaseName;
    }

    @Bean(name = "mongoOneTemplate")
    public MongoOperations mongoOperations() {
        try {
            return mongoTemplate();
        } catch (Exception e) {

        }
    }
}

Пн go 2 конфигурация

@Configuration
public class MongoTwoConfiguration extends AbstractMongoConfiguration {

    @Override
    @Bean(name = "mongoTwoClient")
    public MongoClient mongoClient() {
        return new MongoClient(new ServerAddress(mongoTwohostname, mongoTwohostport), 
                new MongoClientOptions.Builder()
                    .connectTimeout(mongoTwoConnTimeoutMillis)
                    .build());
    }

    @Override
    public String getDatabaseName() {
        return mongoTwoDatabaseName;
    }

    @Bean(name = "mongoTwoTemplate")
    public MongoOperations mongoOperations() {
        try {
            return mongoTemplate();
        } catch (Exception e) {

        }
    }
}

Дао 1 :

@Component
public class MongoOneDao  {
    @Autowired
    @Qualifier("mongoOneTemplate")
    private MongoOperations mongoOneTemplate;


    public List<Person> getAll() {
        return mongoOneTemplate.findAll(Person.class);
    }
}

Dao 2:

@Component
public class MongoTwoDao  {
    @Autowired
    @Qualifier("mongoTwoTemplate")
    private MongoOperations mongoTwoTemplate;


    public List<Person> getAll() {
        return mongoTwoTemplate.findAll(Person.class);
    }
}

Какой бы Dao я ни использовал MongoOneDao или MongoTwoDao, он всегда вызывает одну и ту же базу данных. Не могли бы вы помочь в том, чего мне не хватает.

PS: Я не хочу использовать репозитории.

Ответы [ 2 ]

0 голосов
/ 17 июня 2020
@Configuration
public class MongoOneConfiguration {

    @Bean
    public MongoClient mongoOneClient() {
        return new MongoClient("localhost");
    }

    @Bean
    public MongoTemplate mongoOneTemplate() throws Exception {
        return new MongoTemplate(mongoOneClient(), "db1");
    }
}
 @Configuration
public class MongoTwoConfiguration {


    public MongoClient mongoTwoClient() {
        return new MongoClient("localhost");
    }

    @Bean
    public MongoTemplate mongoTwoTemplate() throws Exception {
        return new MongoTemplate(mongoTwoClient(), "db2");
    }
}

Определите два разных шаблона mon go с разными базами данных, он должен работать.

0 голосов
/ 17 июня 2020

Я думаю, вам следует создать 2 разных экземпляра MongoDbFactory в конфигурации и использовать разные фабрики для создания разных MongoTemplates. Взгляните на эту Ссылку . Может помочь

...