在Spring Boot中可以使用@CacheConfig注解来配置多个缓存。使用@CacheConfig注解可以为多个方法或类统一指定缓存配置。具体步骤如下:
在Spring Boot的主配置类或者需要启用缓存的配置类上添加@EnableCaching注解,开启缓存功能。
在需要启用缓存的方法上添加@Cacheable、@CachePut、@CacheEvict等缓存注解,指定缓存的一些配置,如缓存名称、缓存键等。
在需要启用缓存的类上添加@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属性指定了默认的缓存名称,如果在具体的方法上没有指定缓存名称,那么就会使用默认的缓存名称。如果在具体的方法上指定了缓存名称,那么就会使用方法上指定的缓存名称。