Spring Data MongoDB как установить индекс ttl из системного свойства - PullRequest
0 голосов
/ 16 января 2020

Предпочтительно, используя аннотацию @Indexed или каким-либо другим декларативным способом, возможно ли внедрить системное свойство, предпочтительно используя 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;
}

1 Ответ

0 голосов
/ 17 января 2020

Начиная с SpringData MongoDB 2.2, вы можете использовать expireAfter , который принимает числовые значения c, за которыми следует их единица измерения или выражение шаблона Spring.

...