All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.anonymousmister.bootfastconfig.cache.properties.CaffeineBuilder Maven / Gradle / Ivy

package com.github.anonymousmister.bootfastconfig.cache.properties;

import com.github.benmanes.caffeine.cache.Caffeine;
import lombok.*;
import lombok.experimental.Accessors;

import java.util.concurrent.TimeUnit;

/**
 * @author mister
 */
@Data
@Accessors(chain = true)
public class CaffeineBuilder {

    /**
     * 初始的缓存空间大小
     */
    private Integer initialCapacity = 100;
    /**
     * 缓存的最大条数
     */
    private Long maximumSize = 300L;
    /**
     * 缓存的最大权重
     */
    private Long maximumWeight;
    /**
     * 最后一次写入或访问后经过固定时间过期
     */
    private Duration expireAfterAccess = new Duration(120, TimeUnit.SECONDS);
    /**
     * 最后一次写入后经过固定时间过期
     */
    private Duration expireAfterWrite;

    @AllArgsConstructor
    @NoArgsConstructor
    public class Duration {
        @Getter
        @Setter
        private long duration = 60;
        @Getter
        @Setter
        private TimeUnit unit;

    }


    public Caffeine Builder() {
        Caffeine objectObjectCaffeine = Caffeine.newBuilder();
        if (initialCapacity != null) {
            objectObjectCaffeine.initialCapacity(initialCapacity);
        }
        if (expireAfterAccess != null) {
            objectObjectCaffeine.expireAfterAccess(expireAfterAccess.getDuration(), expireAfterAccess.getUnit());
        }
        if (expireAfterWrite != null) {
            objectObjectCaffeine.expireAfterWrite(expireAfterWrite.getDuration(), expireAfterWrite.getUnit());
        }
        if (maximumSize != null) {
            objectObjectCaffeine.maximumSize(maximumSize);
        } else if (maximumWeight != null) {
            objectObjectCaffeine.maximumWeight(maximumWeight);
        }
        return objectObjectCaffeine;
    }


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy