4

spring-data-couchbaseを使用して特定のcouchbaseドキュメントのTTL(Time to Live)を設定するには? 次のようにドキュメント表記を使用して有効期限を設定する方法があることを知っています @Document(expiry = 10)

http://docs.spring.io/spring-data/couchbase/docs/1.1.1.RELEASE/reference/html/couchbase.entity.html

Entity クラスを介して保存されるすべてのドキュメントの TTL を設定します。

しかし、特定のドキュメントの有効期限(TTL)時間を設定する方法があるようです。http://docs.couchbase.com/developer/dev-guide-3.0/read-write.htmlに記載

spring-data-couchbase を介して上記の機能をどのように実現できますか? Java SDK を使用して機能を実現できたとしても、問題ありません。

どんな助けでも.....

4

4 に答える 4

5

Spring データ カウチベースを使用すると、これはドキュメントごとに ttl を構成できる簡単な方法です。

public class CouchbaseConfig extends AbstractCouchbaseConfiguration {

    @Override
    protected List<String> 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<? extends CouchbasePersistentEntity<?>, 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());
            }
        }
    }


}
于 2015-07-31T16:58:01.670 に答える