@EnableCaching @Cacheable @CachePut redis注解缓存

news/2024/12/22 13:14:29/

@EnableCaching注解是spring framework中的注解驱动的缓存管理功能。自spring版本3.1起加入了该注解。如果你使用了这个注解,那么你就不需要在XML文件中配置cache manager了。

当你在配置类(@Configuration)上使用@EnableCaching注解时,会触发一个post processor,这会扫描每一个spring bean,查看是否已经存在注解对应的缓存。如果找到了,就会自动创建一个代理拦截方法调用,使用缓存的bean执行处理。

@EnableCaching
@Configuration
public class RedisConfig {/*** @Cacheable注解不支持配置过期时间,所有需要通过配置CacheManneg来配置默认的过期时间和针对每个类或者是方法进行缓存失效时间配置。* @param redisConnectionFactory* @return*/@Beanpublic CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {return new RedisCacheManager(RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory),this.getRedisCacheConfigurationWithTtl(600), // 默认策略,未配置的 key 会使用这个this.getRedisCacheConfigurationMap() // 指定 key 策略);}private Map<String, RedisCacheConfiguration> getRedisCacheConfigurationMap() {Map<String, RedisCacheConfiguration> redisCacheConfigurationMap = new HashMap<>();redisCacheConfigurationMap.put("wxcl", this.getRedisCacheConfigurationWithTtl(60*60*24*7));//redisCacheConfigurationMap.put("UserInfoListAnother", this.getRedisCacheConfigurationWithTtl(18000));return redisCacheConfigurationMap;}private RedisCacheConfiguration getRedisCacheConfigurationWithTtl(Integer seconds) {StringRedisSerializer keyStringRedisSerializer = new StringRedisSerializer();Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);ObjectMapper om = new ObjectMapper();om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);jackson2JsonRedisSerializer.setObjectMapper(om);RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig();redisCacheConfiguration = redisCacheConfiguration.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer)).entryTtl(Duration.ofSeconds(seconds));redisCacheConfiguration.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(keyStringRedisSerializer));return redisCacheConfiguration;}}
@Slf4j
@Service("myUserCacheService")
public class MyUserCacheService {/*** sso登录用户获取当前用户* @param token token* @param user  获取默认null*/@Cacheable(value = "iotgw",key = "'user'+#token",unless = "#result eq null")public Map<String, String> getUserFromRedis(String token, Map<String, String> user) {log.info("从缓存中获取sso登录人信息失败 {},准备写入缓存", user);return user;}/*** 获取企业信息* @param token   存储关键值* @param company 企业信息*/@Cacheable(value = "devicecenter",key = "'company'+#token",unless = "#result eq null")public Map<String, String> getCompanyFromRedis(String token, Map<String, String> company) {log.info("从缓存中获取登录人信息失败 {},准备写入缓存", company);return company;}/*** 企业信息缓存变更* @param token   存储关键值* @param company 企业信息*/@CachePut(value = "devicecenter",key = "'company'+#token",unless = "#result eq null")public Map<String, String> setCompanyFromRedis(String token, Map<String, String> company) {log.info("从缓存中获取登录人信息失败 {},准备写入缓存", company);return company;}/*** 后台登录用户获取当前用户*/@Cacheable(value = "iotmgw",key = "'user'+#userId",unless = "#result eq null")public Map<String, String> getManagerUserFromRedis(String userId, Map<String, String> user) {log.info("从缓存中获取后台登录人信息失败 {},准备写入缓存", user);return user;}}

http://www.ppmy.cn/news/789507.html

相关文章

企查查、天眼查、启信宝的产品调研分析

三家网站主要针对企业数据&#xff0c;进行多维度聚合和分析&#xff0c;提供免费和收费的附加服务项目 选取市场上&#xff0c;目前比较有名的SAAS模式的平台&#xff0c;进行竞品分析&#xff0c;竞品对象包括企查查、天眼查、启信宝等三家&#xff0c;目前三家共占据了90%以…

中科银谷:企查查天眼查的企业工商数据是从哪里来的?

从数据来源上看&#xff1a; 目前绝大部分的工商数据都是从国家工商总局的公示数据中提取、整理、更新来的。公示数据不提供官方接口&#xff0c;所有很多数据分析的工作无法直接进行&#xff0c;要汇总整理编辑再利用。 从数据的应用场景上看&#xff1a; 主要在TO B 企业服…

通过天眼查查询相关企业信息

ApiOperation("天眼查询企业信息列表")GetMapping("/getTianYan")public AjaxResult getTianYan(String charMa, String keyword) {Map<String, Object> map new HashMap<>();HttpHeaders headers new HttpHeaders();headers.add("Auth…

基于Python爬取天眼查网站的企业信息

爬虫简介 这是一个在未登录的情况下&#xff0c;根据企业名称搜索&#xff0c;爬取企业页面数据的采集程序 注意:这是一个比较简单的爬虫&#xff0c;基本上只用到了代理&#xff0c;没有用到其他的反反爬技术&#xff0c;不过由于爬取的数据比较多&#xff0c; 适合刷解析技能…

java对接天眼查接口,天眼查提供案例方法过期最新案例

java对接天眼查接口 1、先了解天眼查是用来做什么的2、确定账号3、登录账号&#xff0c;找到数据接口&#xff0c;找到token&#xff0c;调用示例 1、先了解天眼查是用来做什么的 天眼查&#xff0c;是中国领先的商业查询平台 &#xff0c;已收录全国近3亿家社会实体信息&…

Java项目对接天眼查

Java项目对接天眼查 文章目录 Java项目对接天眼查天眼查接口以及token获取1、登录天眼查开放平台2、找到数据接口&#xff0c;找到token&#xff0c;调用示例 Java代码以及返回值1、config2、controller层3、service层4、实体类4、测试结果 总结 天眼查接口以及token获取 1、登…

Python访问天眼查

还是今年暑假实习&#xff0c;老板让爬公开的企业联系方式数据&#xff0c;还对天眼查这个网站青眼有加。大家都知道&#xff0c;从不知什么时候开始&#xff0c;政府的企业信用公开平台采取了反爬措施&#xff0c;每次搜索都需通过机器人验证&#xff0c;而很多其他的企业信息…

d3 企业图谱 仿天眼查 企查查

最近接到一个需求&#xff0c;终端要加入企业图谱的功能、能无线穿透下去&#xff0c;之前写过一个类似树形图但是节点长度没有自适应&#xff08;如下图&#xff09;&#xff0c;样式也不够好看&#xff0c;产品提出做一个类似企查查那种的企业图谱&#xff0c;能更直观的展示…