java - Spring Data MongoDB 如何从系统属性设置索引 ttl

标签 java spring-data-mongodb

最好,使用@Indexed注释或其他声明方式,可以注入(inject)系统属性,最好使用SPeL。

我尝试了以下方法,但发现 expireAfterSeconds 给出错误,因为它需要一个 int:

@Data
@Document(collection = "#{@xyzUpdates.collectionName}")
public class UpdatesFromXyz {

    @Id
    @Field("resourceId")
    private UUID resourceId;

    @Indexed(expireAfterSeconds = "#{@xyzUpdates.maxRecords}")
    private LocalDate updateDate;

}

和我的属性类:

@ConfigurationProperties("xyz.updates")
@Getter
@Setter
@Component
public class XyzUpdates {

    private String collectionName = "updatesFromXyz";
    private int maxRecords;
}

最佳答案

从 SpringData MongoDB 2.2 开始,您可以使用 expireAfter它接受数值后跟其测量单位或 Spring 模板表达式。

关于java - Spring Data MongoDB 如何从系统属性设置索引 ttl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59760359/

相关文章:

java - 根据未知值拆分字符串次数

java - GUI 显示空白

java - 如何在 spring data mongodb 中进行这种聚合?

java - spring data mongodb 支持手动引用还是仅支持 DBrefs?

Spring 测试: Avoid to load configuration class on test

java - 如何消除动画过程中出现的闪烁?

java - itext, Flying Saucer : xhtml to pdf ClassCastException

java - JPA criteria API 将 'in' 表达式转换为多个 'OR'

java - Spring 数据 mongodb 分组依据

java - 获取所有数组元素不在日期范围之间的 MongoDB 文档