当前位置: 首页 > 知识库问答 >
问题:

如何指定与Spring的MongoTemplate一起使用的ReadCommerce?

庄阿苏
2023-03-14
var result = mongoClient.getDatabase("somedb")
                        .getCollection("collection")
                        .withReadConcern(ReadConcern.MAJORITY)
                        .find(..)

共有1个答案

曾华翰
2023-03-14

您似乎可以在TransactionOptionsMongoTransactionManager上设置此设置:

https://docs.spring.io/spring-data/mongoDB/docs/current/api/org/springframework/data/mongoDB/mongoTransactionManager.html

示例:

TransactionOptions transactionOptions = TransactionOptions.builder().readConcern(ReadConcern.LOCAL).writeConcern(WriteConcern.W1).build();
return new MongoTransactionManager(dbFactory.getMongoDatabaseFactory(), transactionOptions);
import com.mongodb.ConnectionString;
import com.mongodb.MongoClientSettings;
import com.mongodb.ReadConcern;
import com.mongodb.ReadPreference;
import com.mongodb.WriteConcern;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import org.springframework.context.annotation.Bean;
import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration;
import org.springframework.data.mongodb.core.MongoTemplate;

@Configuration
public class DemoApplication extends AbstractMongoClientConfiguration {

    @Bean
    public MongoTemplate mongoTemplate() {
        return new MongoTemplate(mongoClient(), "someDbName");
    }

    @Override
    public MongoClient mongoClient() {
        final ConnectionString connectionString = new ConnectionString("mongodb://localhost:27017/someDbName");

        MongoClientSettings mongoClientSettings = MongoClientSettings.builder()
                .applyConnectionString(connectionString)
                .readConcern(ReadConcern.DEFAULT)
                .writeConcern(WriteConcern.MAJORITY)
                .readPreference(ReadPreference.primary()).build();

        return MongoClients.create(mongoClientSettings);
    }

    @Override
    protected String getDatabaseName() {
        return "someDbName";
    }
}
 类似资料:
  • 给出了以下配置: 我需要一个存储库来访问电影,看起来有点像这样: 是否有一种注释驱动的方法来告诉存储库要使用哪个模板?如果没有,还能做些什么来解决这个问题?

  • 作为参考,我们有两个选项可以让Multipart与Spring Security一起工作: 在Spring Security之前放置MultipartFilter 在行动中包括CSRF令牌 对于第一种选择,我尝试了以下方法: 创建安全应用程序初始化类: > 在application.properties中更改Spring安全过滤器顺序 然后添加FilterRegistrationBean 不幸的是

  • 更新:不幸的是,我没能用自定义TrustStore做到这一点。我用installCert.java安装了证书。

  • 我正在将我的Spring应用程序从Spring-boot 1.5.9迁移到Spring-boot 2.0.0。使用这个新的Spring包,我在Redis中缓存数据时遇到了一些问题。 在我的配置中,我有3个具有不同TTL(长、中、短)的CacheManager: 我还有一个自定义RestTemplate: 在上一个Spring版本中,缓存的每个数据都使用这个RestTemplate,并使用Gener

  • 我有Spring Boot应用程序: Build.Gradle包含: 和测试 我的意图是使用嵌入式MongoDB进行上述测试。当我运行它时,会弹出以下错误: 2017-03-05 17:14:51.993错误27857--[main]O.S.Boot.SpringApplication:应用程序启动失败 我的应用程序属性: 如何解决这个问题?提前道谢。

  • 问题内容: 我正在尝试为C库编写SWIG包装器,该包装器使用指向其结构中函数的指针。我不知道如何处理包含函数指针的结构。下面是一个简化的示例。 test.i: 样本会议: 有人知道是否有可能让 t.my_func(1) 返回2吗? 谢谢! 问题答案: 我找到了答案。如果我将函数指针声明为SWIG“成员函数”,则它似乎可以按预期工作: 会议: 我希望不需要编写任何特定于SWIG的自定义代码(我希望仅