Spring
文章平均质量分 69
Lvshen的技术小屋
技术宅
展开
-
开源的高性能本地缓存-Caffeine
高性能本地缓存在将本地缓存前你肯定在想,本地缓存有么好讲的,不就是一个map么。把要缓存的数据存入map中,自己就能实现。但是这里有几个点我们要考虑:“ 并发-使用普通的Map还是线程安全的ConcurrentMap? 容量-Map的容量需要有多大? 过期策略-Map里的数据如果很久不用是不是需要定时清除? 驱逐策略-如果数据还没有过期,但是容量满了该怎么处理? ”如果你也有这些问题那么请看下面的文章。之前我介绍了Google的本地缓存Guava Ca原创 2021-01-27 15:59:30 · 893 阅读 · 0 评论 -
SpringBoot中如何让实体类的List属性自动转成Json入库
之前业务开发时,有一个字段接收的数据是Json格式的,并且需要以Json形式入库:数据库中是这样存储的,这里实际是一个Json数组。[{"label":"result1","name":"较好","readonly":false},{"label":"result2","name":"一般","readonly":false},{"label":"result3","na...原创 2021-01-05 10:20:49 · 2691 阅读 · 0 评论 -
SpringBoot中如何实现接口的统一返回和异常的统一捕获
接口的统一返回在开发公司接口时,发现Controller层的接口返回都需要用一个Result包裹,如下图所示:图示代码中无论是创建接口或者查询接口,这里都需要用一个Result去接收,我们来看看Result的结构:这个Result中有几个字段:“ code:状态码 message:状态信息 data:装载正真返回的数据 exception:异常数据 ”然后我们测试下接口,看看返回样式:调用接口,返回格式为:{"cod..原创 2020-12-29 09:10:52 · 603 阅读 · 0 评论 -
这款插件让我的SpringBoot项目实现了热部署
热部署相信你肯定被【修改代码后还要重新部署项目才能测试】这个问题困扰过。有些大项目部署启动一次可能要花个几分钟,我们写完代码后需要自测,测试人员来测试,前后端联调测试。这些过程都需要修改代码,然后重启系统。这样算下来,一天一大半的时间都花在了重新部署上了。那么有没有热部署方案,我修改了代码,不需要重新启动系统也能测试呢。市面上也有很多热部署的方案,比如devtools热部署、springloaded等。这些部署需要引入对应的Maven包,配置相关的配置文件,而且时灵时不灵。关于这些热部署方式网上有很原创 2020-12-07 08:42:11 · 167 阅读 · 0 评论 -
不是说Spring解决了循环依赖问题么-为什么项目还报了循环依赖的异常
什么?SpringBoot项目启动报循环依赖异常今天,我启动项目项目报循环依赖异常了,为了说明我这里简化了。我的代码是这样(模拟)的@ComponentpublicclassTestA{@AutowiredprivateTestBtestB;@Async("taskExecutor")publicTestBgetTestB(){returntestB;}}@Componentpublicc...原创 2020-10-10 08:35:57 · 2568 阅读 · 1 评论 -
使用SpringBoot发送邮件
电子邮件服务器电子邮件服务器类比于现实中的邮局。用户发邮件时,会将邮件发送到邮件服务器,邮件服务器将邮件再发送到接收方的电子邮箱中。邮件服务器又可以分为两种类型:“ SMTP邮件服务器:替用户发送邮件和接收外面发送给本地用户的邮件。 POP3/IMAP邮件服务器:帮助用户读取SMTP邮件服务器接收进来的邮件。 ”邮件传输协议邮件传输协议有如下几种 SMTP协议:全称为 Simple Mail Transfer Protocol,简单邮件传输协议。它定义了邮件客户原创 2020-09-11 08:21:50 · 446 阅读 · 0 评论 -
开发实战-我用Spring的事件监听机制实现了模块的解耦
背景这里我们有一个需求:“当用户支付成功时,需要修改订单状态;短信通知用户;通知仓库发货”原始解决方法你首先想到的肯定是这样publicvoidpaySuccess(StringorderId){if(StringUtils.isNotBlank(orderId)){//1.修改订单状态//2.发送短信通知用户//3.通知仓库发货}}在支付成功的方法里面调用修改订单的方法,调用短...原创 2020-09-06 22:19:20 · 249 阅读 · 0 评论 -
利用AOP自定义Redis缓存注解
背景在查询类开发中我们有使用缓存的场景,一般可以使用Redis作为缓存,来缓解数据库如MySQL的压力。使用缓存的步骤为:“(1)从Redis缓存中获取数据,如果存在数据,直接返回值。(2)如果不存在,执行数据库的查询方法(3)将数据库中的值放入缓存”NO CODE NO BB,代码如下//a.从缓存中获取Stringvalue=redisTemplate.opsForValue().get(key);if(value!=null){log.info...原创 2020-09-03 13:55:52 · 343 阅读 · 0 评论