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

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