我正在尝试在春季靴子中配置两个mongos。但是它总是只拾取一个,这是我的代码。

Mongo 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) {

        }
    }
}


Mongo 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);
    }
}


道2:

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


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


无论我使用MongoOneDao还是MongoTwoDao,它总是调用相同的数据库。你能帮我所缺少的吗?

PS:我不想使用存储库。

最佳答案

我认为您应该在配置中创建2个不同的MongoDbFactory实例,并使用不同的工厂来创建不同的MongoTemplates。看看这个Link。它可以帮助

关于java - 在 Spring 启动中没有存储库的多个mongo,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62432239/

10-08 22:32