How to set TTL for a specific Couchbase document using spring-data-couchbase?

前端 未结 2 1756
轻奢々
轻奢々 2021-01-06 10:56

How to set TTL (Time to Live) for a specific couchbase document using spring-data-couchbase? I know there is way to set expiry time using Document notation as follows @Docum

2条回答
  •  甜味超标
    2021-01-06 11:24

    Using Spring data couchbase, this is a simple way you can configure ttl per document.

    public class CouchbaseConfig extends AbstractCouchbaseConfiguration {
    
        @Override
        protected List bootstrapHosts() {
            return Arrays.asList("localhost");
        }
    
        @Override
        protected String getBucketName() {
            return "default";
        }
    
        @Override
        protected String getBucketPassword() {
            return "password1";
        }
    
        @Bean
        public MappingCouchbaseConverter mappingCouchbaseConverter() throws Exception {
            MappingCouchbaseConverter converter = new ExpiringDocumentCouchbaseConverter(couchbaseMappingContext());
            converter.setCustomConversions(customConversions());
            return converter;
        }
    
    
        class ExpiringDocumentCouchbaseConverter extends MappingCouchbaseConverter {
    
            /**
             * Create a new {@link MappingCouchbaseConverter}.
             *
             * @param mappingContext the mapping context to use.
             */
            public ExpiringDocumentCouchbaseConverter(MappingContext, CouchbasePersistentProperty> mappingContext) {
                super(mappingContext);
            }
    
            // Setting custom TTL on documents.
            @Override
            public void write(final Object source, final CouchbaseDocument target) {
                super.write(source, target);
                if (source instanceof ClassContainingTTL) {
                    target.setExpiration(((ClassContainingTTL) source).getTimeToLive());
                }
            }
        }
    
    
    }
    

提交回复
热议问题