
com.github.anonymousmister.bootfastconfig.cache.caffeine.CaffeineConfig Maven / Gradle / Ivy
package com.github.anonymousmister.bootfastconfig.cache.caffeine;
import com.github.anonymousmister.bootfastconfig.cache.CacheBeanNameConstant;
import com.github.anonymousmister.bootfastconfig.cache.CacheConfig;
import com.github.benmanes.caffeine.cache.Caffeine;
import com.github.anonymousmister.bootfastconfig.cache.properties.CaffeineBuilder;
import com.github.anonymousmister.bootfastconfig.cache.properties.CaffeineCacheProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.cache.caffeine.CaffeineCacheManager;
import org.springframework.context.annotation.Bean;
import java.util.*;
/**
* @author mister
*/
@ConditionalOnClass(value = {Caffeine.class})
public class CaffeineConfig {
@Autowired(required = false)
private List cacheConfigs;
@Autowired
private CaffeineCacheProperties caffeineCacheProperties;
@Autowired
private CaffeineBuilder caffeineBuilder;
@Bean(CacheBeanNameConstant.CAFFEINE_CACHE_MANAGER)
@ConditionalOnMissingBean(name = {CacheBeanNameConstant.CAFFEINE_CACHE_MANAGER}, value = CaffeineCacheManager.class)
public CaffeineCacheManager caffeineCacheManager() {
MyCaffeineCacheManager cacheManager = new MyCaffeineCacheManager();
CaffeineCacheConfig cacheConfigCollect = initCaffeineCacheConfig();
cacheConfigCollect.getCaffeineCacheManager(cacheManager);
return cacheManager;
}
CaffeineCacheConfig initCaffeineCacheConfig() {
CaffeineCacheConfig cacheConfigCollect = new CaffeineCacheConfig();
if (cacheConfigs != null) {
for (CacheConfig cacheConfig : cacheConfigs) {
cacheConfigCollect.setDefaultCaffeineConfig(cacheConfig.getDefaultCaffeineConfig());
cacheConfig.addCaffeineCacheConfig(cacheConfigCollect);
}
}
cacheConfigCollect.addCaffeineCache(caffeineCacheProperties.getCaffeineCacheGrouping());
cacheConfigCollect.setDefaultCaffeineConfig(this.caffeineBuilder);
return cacheConfigCollect;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy