根据缓存名称需要哪种实现?
不是基于缓存名称,而是基于CacheManager(可能),将其中之一声明为
PrimaryCacheManager,如下所示:
@Configuration@EnableCaching@PropertySource(value = { "classpath:/cache.properties" })public class CacheConfig { @Bean @Primary public CacheManager hazelcastCacheManager() { ClientConfig config = new ClientConfig(); HazelcastInstance client = HazelcastClient.newHazelcastClient(config); return new HazelcastCacheManager(client); } @Bean public CacheManager guavaCacheManager() { GuavaCacheManager cacheManager = new GuavaCacheManager("mycache");CacheBuilder<Object, Object> cacheBuilder = CacheBuilder.newBuilder().maximumSize(100).expireAfterWrite(10, TimeUnit.MINUTES);cacheManager.setCacheBuilder(cacheBuilder);return cacheManager; }}并在课程级别将其指定为:
@Service@CacheConfig(cacheManager="hazelcastCacheManager")public class EmployeeServiceImpl implements IEmployeeService {}或在方法级别上为:
@Servicepublic class EmployeeServiceImpl implements IEmployeeService { @Override @Cacheable(value = "EMPLOYEE_", key = "#id", cacheManager= "guavaCacheManager") public Employee getEmployee(int id) { return new Employee(id, "A"); }}如果只需要保留缓存名称,则可以使用多个CacheManager。



