
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