首页 > 解决方案 > 使用 Spring Boot 的 MongoTemplate 自定义配置

问题描述

在使用 Spring Boot 应用程序(2.0.5)时,我希望更改 mongoTemplate 的 WriteResultChecking 属性。我找到了一种通过扩展 AbstractMongoConfiguration 的方法,如下所示。

我得到了同样的工作,但是我发现这种方法有点冒险。这么说是因为这种方法迫使我为

public MongoClient mongoClient() {
    return new MongoClient(host, port);
}

现在 MongoClient 是维护与 MongoDB 连接的中心类,如果我被迫为此编写实现,那么我可能会错过 spring 框架所做的优化。

有人可以建议任何其他最佳方式来覆盖某些属性/行为而不必修补太多吗?

@Configuration
public class MyMongoConfigs extends AbstractMongoConfiguration {


    @Value("${spring.data.mongodb.database}")
    private String databaseName;

    @Value("${spring.data.mongodb.host}")
    private String host;

    @Value("${spring.data.mongodb.port}")
    private int port;


    @Override
    public MongoClient mongoClient() {
        return new MongoClient(host, port);

    }

    @Override
    protected String getDatabaseName() {
        return databaseName;
    }

    @Bean
    public MongoTemplate mongoTemplate() throws Exception {
        MongoTemplate myTemp = new MongoTemplate(mongoDbFactory(), mappingMongoConverter());
        **myTemp.setWriteResultChecking(WriteResultChecking.EXCEPTION);**
        return myTemp;
    }

标签: mongodbspring-bootspring-data-mongodb

解决方案


你的方向是正确的。使用AbstractMongoConfiguration您覆盖您需要自定义的配置,这是正确的方法。 AbstractMongoConfiguration仍然是 Spring 提供的类,所以你不必担心优化,除非你弄乱了你的配置。


推荐阅读