202101-22 手撸一个 spring-boot-starter的全过程 我们使用SpringBoot,基本上都是沉醉在它Stater的方便之中。Starter为我们带来了众多的自动化配置,有了这些自动化配置,我们可以不费吹灰之力就能搭建一个生产级开发环境,有的小伙伴会觉得这个Starter好神奇呀!其实Starter也都是Spring+SpringMVC中的基础知识点实现的,接下来带大家自己来撸一个Starter,慢慢揭开Starter的神秘面纱!核心知识其实Starter的核心就是条件注解@Conditional,当classpath下... 继续阅读 >
202101-21 浅析Spring Boot单体应用熔断技术的使用 壹、入围方案Sentinelgithub地址:https://sentinelguard.io/zh-cn/docs/introduction.html阿里出品,SpringCloudAlibaba限流组件,目前持续更新中自带Dashboard,可以查看接口Qps等,并且可以动态修改各种规则流量控制,直接限流、冷启动、排队熔断降级,限制并发限制数和相应时间系统负载保护,提供系统级别防护,限制总体CPU等主要核心:资源,规则(流量控制规则、熔断降级规则、系统保护规则、来源访问控制规... 继续阅读 >
202101-21 Spring Boot 2.x 把 Guava 干掉了选择本地缓存之王 Caffeine(推荐) 环境配置:JDK版本:1.8Caffeine版本:2.8.0SpringBoot版本:2.2.2.RELEASE一、本地缓存介绍缓存在日常开发中启动至关重要的作用,由于是存储在内存中,数据的读取速度是非常快的,能大量减少对数据库的访问,减少数据库的压力。之前介绍过Redis这种NoSql作为缓存组件,它能够很好的作为分布式缓存组件提供多个服务间的缓存,但是Redis这种还是需要网络开销,增加时耗。本地缓存是直接从本地内存中读取,没有网络开... 继续阅读 >
202101-13 使用Spring Boot Mybatis 搞反向工程的步骤 1.拷贝Mybatis反向工程配置文件到项目的根目录下2.根据项目及表的情况,修改GeneratorMapper.xml配置如果使用高版本,驱动类变为:com.mysql.cj.jdbc.Driverurl后面应该加属性nullCatalogMeansCurrent=true,否则生成有问题当前版本MySQL数据库为5.7主要根据注释来修改自己的内容<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEgeneratorConfigurationPUBLIC"-//mybatis.org//DTDMyBatisG... 继续阅读 >
202101-08 Spring Boot 2.x 实现文件上传功能 文件上传的功能实现是我们做Web应用时候最为常见的应用场景,比如:实现头像的上传,Excel文件数据的导入等功能,都需要我们先实现文件的上传,然后再做图片的裁剪,excel数据的解析入库等后续操作。今天通过这篇文章,我们就来一起学习一下如何在SpringBoot中实现文件的上传。动手试试第一步:创建一个基础的SpringBoot项目,如果还不会的话就先看看这篇《快速入门》。第二步:在pom.xml中引入模版引擎依赖:<dependency><grou... 继续阅读 >
202101-08 Spring Boot项目中集成微信支付v3 1.前言最近忙的一批,难得今天有喘气的机会就赶紧把最近在开发中的一些成果分享出来。前几日分享了自己写的一个微信支付V3的开发包payment-spring-boot-starter,就忙里偷闲完善了一波。期间给微信支付提交了6个BUG,跟微信支付的产品沟通了好几天。项目地址:https://github.com/NotFound403/payment-spring-boot别忘记给个Star啊。那么都完善了哪些内容呢?胖哥来一一介绍。2.Maven中央仓库是的,不用再自行编译打包部署了,... 继续阅读 >
202101-08 Spring Boot 实现https ssl免密登录(X.509 pki登录) 要让项目实现ssl免密登录,首先需要开启https。所以先从SpringBoot如何开启https说起。创建服务端证书为了开启https,我们需要一份证书。实际开发中,会在网上申请一个机构颁发的证书。这里为了方便,我会使用openssl命令自己生成一个证书来使用。opensslreq-x509-sha256-days3650-newkeyrsa:4096-keyoutrootCA.key-outrootCA.crt所有的密码都是123456,然后根据提示输入相关信息就好,如果嫌麻烦也可以... 继续阅读 >
202012-29 详解Spring Boot使用Maven自定义打包方式 前言:本文将告诉你如何将程序Jar与与依赖Jar及配置文件分离打包,以下列举了两种不同Maven打包方式,其打包效果一致!一、第一种Maven打包方式,将jar及resources下全部配置文件,拷贝到指定目录:<!--配置项--><properties><!--自定义配置--><project.jar.output.directory>E:/IDEAFile/file-copy/target/project</project.jar.output.directory></properties><build><plugins><!--项目依赖的jar文件,放置默认配置目录下... 继续阅读 >
202012-24 Spring Boot 2.4新特性减少95%内存占用问题 节省95%的内存占用,减少80%的启动耗时。GraalVM是一种高性能的虚拟机,它可以显著的提高程序的性能和运行效率,非常适合微服务。最近比较火的Java框架Quarkus默认支持GraalVM下图为Quarkus和传统框架(SpringBoot)等对比图,更快的启动速度、更小的内存消耗、更短的服务响应。SpringBoot2.4开始逐步提供对GraalVM的支持,旨在提升上文所述的启动、内存、响应的使用体验。安装GraalVM目前官方社区版本最新为20... 继续阅读 >
202012-22 Spring Boot 2.4版本前后的分组配置变化及对多环境配置结构的影响(推荐) 前几天在《SpringBoot2.4对多环境配置的支持更改》一文中,给大家讲解了SpringBoot2.4版本对多环境配置的配置变化。除此之外,还有一些其他配置变化,所以今天我们就继续讲讲其他的更新内容!spring.profiles.include对于这个配置项,你是否熟悉呢?从字面意思也不难理解,应该就是用来引入一些其他配置的配置(因为有个include嘛),实际作用也确实如此!当我们的应用有很多配置信息的时候,比如当用到了很多中间件MySQL、Re... 继续阅读 >
202012-22 SpringBoot如何接收数组参数的方法 1.创建一个表单实体类,将数组封装到实体类中(Post提交)表单类代码:@DatapublicclassMyForm{privateint[]ids;}控制器代码:@Slf4j@RestController@RequestMapping("/info")publicclassInfoController{@PostMapping("/test")publicStringtest(@RequestBodyMyFormform){log.info(Arrays.toString(form.getIds()));return"success";}}前端代码:wx.request({url:'http://localhost:8085/info/tes... 继续阅读 >
202012-17 Spring Boot 2.4 对多环境配置的支持更改示例代码 在目前最新的SpringBoot2.4版本中,对配置的加载机制做了较大的调整。相关的问题最近也被问的比较多,所以今天就花点时间,给大家讲讲SpringBoot2.4的多环境配置较之前版本有哪些变化。多环境配置2.4版本之前先回顾下,2.4版本之前,我们在yaml配置文件中,使用spring.profiles来定义不同环境的标识,比如下面这样:spring:profiles:"dev"name:dev.didispace.com---spring:profiles:"test"name:test.didispace.com---spr... 继续阅读 >
202012-16 快速搭建Spring Boot+MyBatis的项目IDEA(附源码下载) 如何快速构建一个SpringBoot的项目工具ideaJDK版本1.8SpringBoot版本1.5.9环境搭建实现:最基础前端可以访问到数据库内的内容开始1.IDEA内部新建一个项目,项目类型选择SpringInitializr,ProjectSDK选择适合你当前环境的版本,这里我选择的是1.8(SpringBoot2.0以上的版本,JDK选择请选择1.8即以上版本),构建服务选择默认就好,点击Next2.填写Group和Artifact(此处我使用的是默认,请根据实际情况填写),项目类型选择... 继续阅读 >
202012-16 Spring Boot之搞定mongoTemplate的知识小结 最近开发一些MongoDB+SpringBoot的项目,发现相较于MyBatis来说,SpringBoot对于MongoDB进行操作变化更多,所以总结一下使用mongoTemplate库的知识点,以备以后查阅方便。首先在项目中的pom.xml配置文件中添加如下依赖:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>在需要引入mongoTemplate对象的Service文件中添加该对象即可,如... 继续阅读 >
202012-10 Spring Boot项目集成UidGenerato的方法步骤 前言UidGenerato基于snowflake算法实现UidGenerato由百度开发,基于SnowFlake算法的唯一ID生成器。UidGenerato已组件的形式工作在应用项目中,支持自定义workeid位数和初始化策略,从而适用docker等虚拟化环境下实例自动重启等场景。准备一个maven项目,构建两个模块。分别作为使用方和提供方。(建两个模块主要是为了“造轮子”,其他模块或项目可以直接引用,无需关心uid配置,如果没有分模块,可以指忽略构建两个模块)下载u... 继续阅读 >
202012-10 Spring Boot 通过 Mvc 扩展方便进行货币单位转换的代码详解 由于公司是支付平台,所以很多项目都涉及到金额,业务方转递过来的金额是单位是元,而我们数据库保存的金额单位是分。一般金额的流向有以下几个方向:外部业务方请求我们服务,传递过来的金额单位是元,需要把元转换成分。比如:下单接口。内部系统之间的流转,不管是向下传递还是向上传递系统间的流程都是分,不需要扭转。比如:调用支付引擎(向下传递),支付引擎回调收单业务(向上传递)。向业务方返回数据,这个时候需要把... 继续阅读 >