SpringBoot2 项目缓存从 Redis 切换到 j2cache
首先添加依赖,此处有坑。刚开始添加的是 <artifactId>j2cache-spring-boot-starter</artifactId>,一直报错,后来发现springboot2工程需要使用 <artifactId>j2cache-spring-boot2-starter</artifactId>.
<dependency> <groupId>net.oschina.j2cache</groupId> <artifactId>j2cache-spring-boot2-starter</artifactId> <version>2.7.0-release</version> <exclusions> <exclusion> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> </exclusion> </exclusions> </dependency>
之前配置的缓存管理器及缓存RedisTemplate等工具都是基于Redis、Jedis的,使用了j2cache的starter后,之前的缓存配置基本上已经没有用了,需要注释掉。
之前加的spring-session-data-redis,也需要去掉或者使用使用j2cache作为缓存,也可以切换到j2cache的session方案(暂时没有尝试)。
<dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>
原cache工具类:
@Component("redisCacheUtil") public class RedisCacheUtilImpl<T> implements RedisCacheUtil<T> { @Autowired CacheManager cacheManager; }
修改后:
@Component("redisCacheUtil") @ConditionalOnClass(J2CacheAutoConfiguration.class) @AutoConfigureAfter(J2CacheCacheManger.class) public class RedisCacheUtilImpl<T> implements RedisCacheUtil<T> { private static final Logger log = LoggerFactory.getLogger(RedisCacheUtilImpl.class); @Autowired J2CacheCacheManger cacheManager; }
这里可能会报cacheManager Could not autowire,没关系,不影响。
springboot项目天生可以区分运行环境,我们可以使用j2cache-${spring.profiles.active}.properties来引用不同环境的配置。在application.yml中配置增加:
spring: cache: type: none // 原先使用redis,现在改为none j2cache: config-location: /j2cache-${spring.profiles.active}.properties redis-client: lettuce open-spring-cache: true
我们使用的redis-client为lettuce,并开启spring cache。 在j2cache.properties中,我们重点针对性修改配置:
// 广播策略 j2cache.broadcast = net.oschina.j2cache.cache.support.redis.SpringRedisPubSubPolicy // 一级缓存使用caffeine j2cache.L1.provider_class = caffeine // 二级缓存使用lettuce,和redis-client对应 j2cache.L2.provider_class = lettuce // L2配置 j2cache.L2.config_section = redis // redis缓存序列化方式,不建议配置为json,如果父类和子类有同样的属性(id),在序列化的json中会出现两个id属性,其中一个为空。使用fastjson没有此问题。另外,本人认为使用json序列化比类序列化更好,可以做到更好的反序列化兼容。 j2cache.serialization = fastjson // caffeine的配置文件位置,缓存数量及超时时间可以在里面配置 caffeine.properties = /caffeine.properties
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
beeshell:开源的 React Native 组件库
介绍 beeshell 是一个 React Native 应用的基础组件库,基于 0.53.3 版本,提供一整套开箱即用的高质量组件,包含 JavaScript(以下简称 JS)组件和复合组件(包含 Native 代码),涉及前端(FE)、iOS、Android 三端技术,兼顾通用性和定制化,支持自定义主题,用于开发和服务企业级移动应用。现在已经在 GitHub 上开源,地址:https://github.com/meituan/beeshell 截止目前,beeshell 中的组件已经在美团外卖移动端应用蜜蜂 App 中广泛应用,而且已经持续了一年多时间,通过了各种业务场景、操作系统、机型的实战考验,具备很好的稳定性、安全性和易用性,所以我们将其开源,以期发挥出更大的应用价值。 特性 UI 样式的一致性和定制化。 通用性。主要使用 JS 来实现,保证跨平台通用性。 定制化。我们在比较细的粒度上对组件进行拆分,通过继承的方式层层依赖,功能渐进式增强,为在任意层级上的继承扩展、个性化定制提供了可能。 原生功能支持。组件库中的复合组件包含 Native 代码,支持图片选择、定位等原生功能。...
- 下一篇
solidity教程:solidity开发入门
这篇关于Solidity教程的博客展示了很多Solidity特性。本教程假定你对以太坊虚拟机和编程有一定的了解。 以太坊,“世界计算机”提供了一个非常强大的全球共享基础设施,使用名为Solidity的编程语言构建去中心化应用程序。 让我们开始我们的Solidity教程,介绍Solidity。 什么是Solidity? 以太坊Solidity是一种面向智能合约的高级语言,其语法与JavaScript类似。solidity是用于生成在EVM上执行的机器级代码的工具。solidity编译器获取高级代码并将其分解为更简单的指令。Solidity代码封装在Contracts中。 以太坊合约中的solidity 合约是以太坊去中心化应用程序的基本构建模块。所有变量和函数都是合约的一部分,这是所有项目的起点。一个名为MyFirst的空合约看起来像这样: version pragma ^0.4.19; contract MyFirst{ } 盯紧你的屏幕因为接下来在我们的Solidity教程中我们将开始编码...... Solidity文件的布局 源文件可以包含任意数量的合约定义,包括指令和pragm...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8编译安装MySQL8.0.19
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- 设置Eclipse缩进为4个空格,增强代码规范