CacheConfig.java
package jasper.config;
import com.github.benmanes.caffeine.cache.Caffeine;
import org.springframework.cache.caffeine.CaffeineCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import java.util.concurrent.TimeUnit;
@Profile("!test & !no-cache")
@Configuration
public class CacheConfig {
@Bean
public CaffeineCacheManager cacheManager() {
var cacheManager = new CaffeineCacheManager();
cacheManager.registerCustomCache("oembed-cache", Caffeine.newBuilder()
.maximumSize(10_000)
.expireAfterAccess(1, TimeUnit.HOURS)
.recordStats()
.build());
cacheManager.registerCustomCache("config-cache", Caffeine.newBuilder()
.maximumSize(10_000)
.expireAfterAccess(1, TimeUnit.DAYS)
.recordStats()
.build());
cacheManager.registerCustomCache("user-cache", Caffeine.newBuilder()
.maximumSize(10_000)
.expireAfterAccess(15, TimeUnit.MINUTES)
.recordStats()
.build());
cacheManager.registerCustomCache("user-dto-cache", Caffeine.newBuilder()
.maximumSize(10_000)
.expireAfterAccess(15, TimeUnit.MINUTES)
.recordStats()
.build());
cacheManager.registerCustomCache("user-dto-page-cache", Caffeine.newBuilder()
.maximumSize(10_000)
.expireAfterAccess(15, TimeUnit.MINUTES)
.recordStats()
.build());
cacheManager.registerCustomCache("external-user-cache", Caffeine.newBuilder()
.maximumSize(10_000)
.expireAfterAccess(15, TimeUnit.MINUTES)
.recordStats()
.build());
cacheManager.registerCustomCache("plugin-cache", Caffeine.newBuilder()
.maximumSize(10_000)
.expireAfterAccess(1, TimeUnit.DAYS)
.recordStats()
.build());
cacheManager.registerCustomCache("plugin-config-cache", Caffeine.newBuilder()
.maximumSize(10_000)
.expireAfterAccess(1, TimeUnit.DAYS)
.recordStats()
.build());
cacheManager.registerCustomCache("plugin-dto-cache", Caffeine.newBuilder()
.maximumSize(10_000)
.expireAfterAccess(1, TimeUnit.DAYS)
.recordStats()
.build());
cacheManager.registerCustomCache("plugin-dto-page-cache", Caffeine.newBuilder()
.maximumSize(10_000)
.expireAfterAccess(1, TimeUnit.DAYS)
.recordStats()
.build());
cacheManager.registerCustomCache("template-cache", Caffeine.newBuilder()
.maximumSize(10_000)
.expireAfterAccess(1, TimeUnit.DAYS)
.recordStats()
.build());
cacheManager.registerCustomCache("template-config-cache", Caffeine.newBuilder()
.maximumSize(10_000)
.expireAfterAccess(1, TimeUnit.DAYS)
.recordStats()
.build());
cacheManager.registerCustomCache("template-cache-wrapped", Caffeine.newBuilder()
.maximumSize(1)
.expireAfterAccess(1, TimeUnit.DAYS)
.recordStats()
.build());
cacheManager.registerCustomCache("template-schemas-cache", Caffeine.newBuilder()
.maximumSize(1)
.expireAfterAccess(1, TimeUnit.DAYS)
.recordStats()
.build());
cacheManager.registerCustomCache("template-defaults-cache", Caffeine.newBuilder()
.maximumSize(1)
.expireAfterAccess(1, TimeUnit.DAYS)
.recordStats()
.build());
cacheManager.registerCustomCache("template-dto-cache", Caffeine.newBuilder()
.maximumSize(10_000)
.expireAfterAccess(1, TimeUnit.DAYS)
.recordStats()
.build());
cacheManager.registerCustomCache("template-dto-page-cache", Caffeine.newBuilder()
.maximumSize(10_000)
.expireAfterAccess(1, TimeUnit.DAYS)
.recordStats()
.build());
return cacheManager;
}
}