@Cacheable注解 给接口加Redis缓存 并配置过期时间
@GetMapping("/information")
@Cacheable(cacheNames = "dfs_screen_information", key = "'lineId=' + #lineId + ',componentName=' + #componentName + ',dateIn=' + #dateIn")
public ResponseData workOrderInformation(@RequestParam(value = "componentName", required = false) String componentName,
@RequestParam(value = "date", required = false) String dateIn,
@RequestParam(value = "lineId", required = false) Integer lineId) {
if (isHistory(componentName, dateIn)) {
return ResponseData.success(this.getHistoryData(componentName, dateIn));
}
Date date = getDate(dateIn);
return ResponseData.success(productionService.workOrderInformation(lineId, date));
}
cacheNames :缓存名称 全局唯一
key :不写默认使用方法名称,没有入参可以不写 ,有入参必写,否则会导致数据错误(key值变化时会更新缓存)
Redis配置类:
package com.yelink.dfs.config; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.cache.CacheManager; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.cache.RedisCacheConfiguration; import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.listener.RedisMessageListenerContainer; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; import java.time.Duration; import java.util.Objects; /** * redis配置类 * * @author shuang */ @Configuration public class RedisConfig { @Bean public RedisTemplateredisTemplate(RedisConnectionFactory factory) { RedisTemplate template = new RedisTemplate<>(); template.setConnectionFactory(factory); Jackson2JsonRedisSerializer