springboot

springboot怎么设置多个缓存

小亿
173
2024-01-05 22:23:49
栏目: 编程语言

在Spring Boot中可以使用@CacheConfig注解来配置多个缓存。使用@CacheConfig注解可以为多个方法或类统一指定缓存配置。具体步骤如下:

  1. 在Spring Boot的主配置类或者需要启用缓存的配置类上添加@EnableCaching注解,开启缓存功能。

  2. 在需要启用缓存的方法上添加@Cacheable、@CachePut、@CacheEvict等缓存注解,指定缓存的一些配置,如缓存名称、缓存键等。

  3. 在需要启用缓存的类上添加@CacheConfig注解,指定默认的缓存配置,包括缓存的名称、缓存的管理器等。

下面是一个示例代码,演示如何在Spring Boot中配置多个缓存:

@Configuration
@EnableCaching
public class CacheConfig {
    
    @Bean
    public CacheManager cacheManager() {
        SimpleCacheManager cacheManager = new SimpleCacheManager();
        
        // 创建缓存对象
        Cache cache1 = new ConcurrentMapCache("cache1");
        Cache cache2 = new ConcurrentMapCache("cache2");
        
        // 将缓存对象加入到缓存管理器中
        cacheManager.setCaches(Arrays.asList(cache1, cache2));
        
        return cacheManager;
    }
    
    @CacheConfig(cacheNames = "cache1")
    @Service
    public class MyService1 {
        
        @Cacheable(key = "#id")
        public String getDataFromCache(int id) {
            // 从数据库或其他地方获取数据
            return "Data from cache1";
        }
        
        @CachePut(key = "#id")
        public String updateDataInCache(int id) {
            // 更新缓存中的数据
            return "Updated data in cache1";
        }
        
        @CacheEvict(key = "#id")
        public void deleteDataFromCache(int id) {
            // 从缓存中删除数据
        }
    }
    
    @CacheConfig(cacheNames = "cache2")
    @Service
    public class MyService2 {
        
        @Cacheable(key = "#id")
        public String getDataFromCache(int id) {
            // 从数据库或其他地方获取数据
            return "Data from cache2";
        }
        
        @CachePut(key = "#id")
        public String updateDataInCache(int id) {
            // 更新缓存中的数据
            return "Updated data in cache2";
        }
        
        @CacheEvict(key = "#id")
        public void deleteDataFromCache(int id) {
            // 从缓存中删除数据
        }
    }
}

在上面的示例中,我们使用@CacheConfig注解为MyService1和MyService2类统一指定了缓存配置。MyService1使用了名为"cache1"的缓存,而MyService2使用了名为"cache2"的缓存。我们还需要在CacheConfig类中创建Cache对象,并将它们加入到缓存管理器中。

注意,@CacheConfig注解中的cacheNames属性指定了默认的缓存名称,如果在具体的方法上没有指定缓存名称,那么就会使用默认的缓存名称。如果在具体的方法上指定了缓存名称,那么就会使用方法上指定的缓存名称。

0
看了该问题的人还看了