Spring Data MongoDB Repository 提供了很多有用的方法来生成查询,例如派生查询和 CRUD 操作。例如:
public interface UserMongoRepository extends MongoRepository<User, UUID> {
List<User> findByUserName(String userName);
...
以及
findById
,例如userMongoRepository.findById(uuid);
有没有办法全局设置附加参数或作为这些 Spring Data 方法的参数来设置 MongoDB $maxTimeMS 参数。否则,我将需要重写所有这些派生查询以使用
Query
类,实例化一个新的 Query
对象并设置 .maxTimeMsec()
方法。
经过一番研究,我发现这适合您的情况: 我没有测试情况请测试一下。
@Configuration
public class MongoConfig {
@Bean
public MongoClientSettingsBuilderCustomizer mongoClientSettings() {
return custom -> custom.applyToSocketSettings(builder ->
// this section
builder.connectTimeout(3, TimeUnit.SECONDS)
.readTimeout(3, TimeUnit.SECONDS))
// until here
.applyToConnectionPoolSettings(builder ->
builder.maxSize(10)
.minSize(1)
.maxConnectionIdleTime(3, TimeUnit.SECONDS)
.maxWaitTime(10, TimeUnit.SECONDS))
.applyToClusterSettings(builder ->
builder.serverSelectionTimeout(3, TimeUnit.SECONDS))
.applicationName("applicationName");
}
}