Spring Cache基础组件 BasicOperation

Spring Cache基础组件 BasicOperation,第1张

Spring Cache基础组件 BasicOperation 简介

所有缓存动作需实现的接口,定义了获取缓存标识符集合的方法;

核心代码
Set getCacheNames();
实现子类
public interface BasicOperation
    public abstract class CacheOperation implements BasicOperation
        public class CacheableOperation extends CacheOperation
        public class CacheEvictOperation extends CacheOperation
        public class CachePutOperation extends CacheOperation
CacheOperation 简介

缓存动作的基础抽象类,构造器模式构造CacheOperation实例;

核心代码
// 名称
private final String name;
// 缓存标识符集合
private final Set cacheNames;
// 缓存KEY
private final String key;
// 缓存KEY生成器
private final String keyGenerator;
// 缓存管理器
private final String cacheManager;
// 缓存解析器
private final String cacheResolver;
// 先决条件
private final String condition;
// toString值
private final String toString;



public Set getCacheNames() {
     return this.cacheNames;
}


protected CacheOperation(Builder b) {
     this.name = b.name;
     this.cacheNames = b.cacheNames;
     this.key = b.key;
     this.keyGenerator = b.keyGenerator;
     this.cacheManager = b.cacheManager;
     this.cacheResolver = b.cacheResolver;
     this.condition = b.condition;
     this.toString = b.getOperationDescription().toString();
}


@Override
public boolean equals(@Nullable Object other) {
     return (other instanceof CacheOperation && toString().equals(other.toString()));
}


@Override
public int hashCode() {
     return toString().hashCode();
}


@Override
public final String toString() {
     return this.toString;
}



public abstract static class Builder {

    // 名称
    private String name = "";
    // 缓存标识符集合
    private Set cacheNames = Collections.emptySet();
    // 缓存KEY
    private String key = "";
    // 缓存KEY生成器
    private String keyGenerator = "";
    // 缓存管理器
    private String cacheManager = "";
    // 缓存解析器
    private String cacheResolver = "";
    // 先决条件
    private String condition = "";


    
    protected StringBuilder getOperationDescription() {
        StringBuilder result = new StringBuilder(getClass().getSimpleName());
        result.append('[').append(this.name);
        result.append("] caches=").append(this.cacheNames);
        result.append(" | key='").append(this.key);
        result.append("' | keyGenerator='").append(this.keyGenerator);
        result.append("' | cacheManager='").append(this.cacheManager);
        result.append("' | cacheResolver='").append(this.cacheResolver);
        result.append("' | condition='").append(this.condition).append(''');
        return result;
    }

    
    public abstract CacheOperation build();
}
CacheableOperation 简介

缓存添加动作的具体实现;

核心代码
// 后决条件
@Nullable
private final String unless;
// 同步标识
private final boolean sync;



public CacheableOperation(CacheableOperation.Builder b) {
     super(b);
     this.unless = b.unless;
     this.sync = b.sync;
}



public static class Builder extends CacheOperation.Builder {

    // 后决条件
    @Nullable
    private String unless;
    // 同步标识
    private boolean sync;


    
    @Override
    protected StringBuilder getOperationDescription() {
        StringBuilder sb = super.getOperationDescription();
        sb.append(" | unless='");
        sb.append(this.unless);
        sb.append(''');
        sb.append(" | sync='");
        sb.append(this.sync);
        sb.append(''');
        return sb;
    }

    
    @Override
    public CacheableOperation build() {
        return new CacheableOperation(this);
    }
}
CacheEvictOperation 简介

缓存清除动作的具体实现;

核心代码
// 全部清除标识
private final boolean cacheWide;
// 在方法执行前执行标识
private final boolean beforeInvocation;



public CacheEvictOperation(CacheEvictOperation.Builder b) {
     super(b);
     this.cacheWide = b.cacheWide;
     this.beforeInvocation = b.beforeInvocation;
}



public static class Builder extends CacheOperation.Builder {

    // 全部清除标识
    private final boolean cacheWide;
    // 在方法执行前执行标识
    private final boolean beforeInvocation;


    
    @Override
    protected StringBuilder getOperationDescription() {
         StringBuilder sb = super.getOperationDescription();
         sb.append(',');
         sb.append(this.cacheWide);
         sb.append(',');
         sb.append(this.beforeInvocation);
         return sb;
    }

    
    @Override
    public CacheEvictOperation build() {
         return new CacheEvictOperation(this);
    }
}
CachePutOperation 简介

缓存更新动作的具体实现;

核心代码
// 后决条件
@Nullable
private final String unless;



public CachePutOperation(CachePutOperation.Builder b) {
     super(b);
     this.unless = b.unless;
}



public static class Builder extends CacheOperation.Builder {

    // 后决条件
    private final String unless;


    
    @Override
    protected StringBuilder getOperationDescription() {
        StringBuilder sb = super.getOperationDescription();
        sb.append(" | unless='");
        sb.append(this.unless);
        sb.append(''');
        return sb;
    }

    
    @Override
    public CachePutOperation build() {
         return new CachePutOperation(this);
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5719443.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存