SpringBoot
文章平均质量分 85
快速构建Spring项目,简化Spring的配置
李熠漾
22届毕业、软件工程、Java、写代码、独立思考
展开
-
【SpringBoot新手篇】SpringBoot 自动配置原理
SpringBoot 自动配置原理常用配置自动配置原理配置文件到底能写什么?怎么写?常用配置这里指的配置主要是application.yml或者application.properties修改默认属性的文件server.port=9090 # 服务端口号server.tomcat.uri-encoding=UTF-8 #以Tomcat为web容器时的字符编码spring.data.mongodb.uri=mongodb://localhost:27017/mydb #mongodb连接s原创 2021-07-30 16:25:11 · 843 阅读 · 0 评论 -
【SpringBoot高级篇】SpringBoot后端接口规范
SpringBoot后端接口规范所需依赖包参数校验业务层校验Validator + BindResult进行校验Validator + 自动抛出异常全局异常处理基本使用自定义异常数据统一响应自定义统一响应体响应码枚举全局处理响应数据总结接口规范代码总结响应码枚举自定义数据统一响应自定义异常全局异常处理全局处理响应数据一个后端接口大致分为四个部分组成:接口地址(url)、接口请求方式(get、post等)、请求数据(request)、响应数据(response)。如何构建这几个部分每个公司要求都不同,没有什原创 2021-07-30 15:39:39 · 3092 阅读 · 1 评论 -
【SpringBoot新手篇】Spring Boot 中解决跨域的 5 种方式
Spring Boot 中解决跨域的 5 种方式SpringBoot实现 CORS 跨域请求的方式1.返回新的 CorsFilter(全局跨域)2. 重写 WebMvcConfigurer(全局跨域)3. 使用注解 (局部跨域)4. 手动设置响应头(局部跨域)SpringBoot实现 CORS 跨域请求的方式对于 CORS的跨域请求,主要有以下几种方式可供选择:返回新的CorsFilter重写 WebMvcConfigurer使用注解 @CrossOrigin手动设置响应头 (HttpServ原创 2021-04-29 16:46:50 · 589 阅读 · 0 评论 -
【SpringBoot应用篇】【AOP+注解】SpringBoot+SpEL表达式基于注解实现权限控制
Spring 表达式语言最初是为 Spring 社区创建的,它拥有一种受良好支持的表达式语言,可用于 Spring 产品组合中的所有产品。虽然 SpEL 是 Spring 产品组合中表达式评估的基础,但它不直接与 Spring 绑定,可以独立使用。Spring 表达式语言 SpEL 是一种非常强大的表达式语言,它支持在运行时查询和操作对象图。它提供了许多高级功能,例如方法调用和基本的字符串模板功能。注解的支持就是使用SpEL表达式实现的权限控制。Spring Security框架中启用。原创 2023-12-22 11:17:06 · 2280 阅读 · 6 评论 -
【SpringBoot应用篇】SpringBoot集成Caffeine本地缓存
缓存在日常开发中启动至关重要的作用,由于是存储在内存中,数据的读取速度是非常快的,能大量减少对数据库的访问,减少数据库的压力。之前介绍过 Redis 这种 NoSql 作为缓存组件,它能够很好的作为分布式缓存组件提供多个服务间的缓存,但是 Redis 这种还是需要网络开销,增加时耗。本地缓存是直接从本地内存中读取,没有网络开销,例如秒杀系统或者数据量小的缓存等,比远程缓存更合适。原创 2023-09-11 14:38:02 · 2473 阅读 · 0 评论 -
【SpringBoot应用篇】SpringBoot集成MinIO对象存储服务
MinIO基于Apache License v2.0开源协议的对象存储服务,可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows,Linux, OS X和FreeBSD上。配置简单,基本是复制可执行程序,单行命令可以运行起来。MinIO兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。原创 2023-09-04 15:35:41 · 1576 阅读 · 0 评论 -
【MybBatis高级篇】MyBatis 拦截器
拦截器是一种基于 AOP(面向切面编程)的技术,它可以在目标对象的方法执行前后插入自定义的逻辑。Executor:拦截执行器的方法,例如 update、query、commit、rollback 等。可以用来实现缓存、事务、分页等功能。ParameterHandler:拦截参数处理器的方法,例如 setParameters 等。可以用来转换或加密参数等功能。原创 2023-07-31 23:50:50 · 11275 阅读 · 0 评论 -
【SpringBoot应用篇】SpringBoot+MybatisPlus集成国产DM8(达梦)数据库
DM8 是达梦数据库有限公司推出的新一代高性能数据库产品。它具有开放的、可扩展的体系结构,易于使用的事务处理系统,以及低廉的维护成本,是达梦公司完全自主开发的产品。DM8 以 RDBMS 为核心,以 SQL 为标准,是一个能跨越多种软硬件平台、具有大型数据综合管理能力的、高效稳定的通用数据库管理系统。连接达梦数据库实例安装文档这里主要简单介绍以下几个简单但重要的概念:数据库、实例、用户、表空间、模式、表、角色、数据文件。数据库:数据存储的物理介质。原创 2023-07-25 00:38:42 · 4180 阅读 · 0 评论 -
【SpringBoot应用篇】SpringBoot集成atomikos实现多数据源配置和分布式事务管理
XA 是由 X/Open 组织提出的分布式事务的一种协议(或者称之为分布式架构)。它主要定义了两部分的管理器,全局事务管理器及资源管理器。在 XA 的设计理念中,把不同资源纳入到一个事务管理器进行统一管理,例如数据库资源,消息中间件资源等,从而进行全部资源的事务提交或者取消,目前主流的数据库,消息中间件都支持 XA 协议。JTA 叫做 Java Transaction API,它是 XA 协议的 JAVA 实现。目前在 JAVA 里面,关于 JTA 的定义主要是两部分事务管理器接口-----原创 2023-07-15 23:35:00 · 1186 阅读 · 0 评论 -
【SpringBoot应用篇】【AOP+注解】SpringBoot+Guava基于注解实现接口限流+Redis实现分布式接口限流
【代码】【SpringBoot应用篇】【AOP+注解】SpringBoot+Guava基于注解实现接口限流。原创 2023-07-13 09:33:02 · 947 阅读 · 0 评论 -
全局异常工具类GlobalExceptionHandler
// 自定义异常@Getterpublic class APIException extends RuntimeException{ private int code; private String message; public APIException(String message){ this(1001,message); } public APIException(int code,String message){原创 2021-08-06 08:33:06 · 2725 阅读 · 0 评论 -
【SpringBoot应用篇】【AOP+注解】SpringBoot使用Aspect AOP基于注解获取方法形参
需求: 需要保存的日志内容在方法的参数中,并且方法参数的类型对象不一样,且对象的属性名称不一样。这一篇文章已经给出了解决方法。但是如果方法的参数不同,会出来转换器类爆炸的情况。问题:Java反射中Parameter的getName后得到arg0的问题。1、@LogPro注解中添加field目标属性字段。2、LogAspectPro切面增强。原创 2023-04-04 22:19:18 · 1856 阅读 · 0 评论 -
【SpringBoot高级篇】【AOP+注解】SpringBoot集成jasypt 配置脱敏和基于注解实现数据脱敏
一旦密码泄漏,将会带来很大的安全隐患。Jasypt 开源安全框架就是专门用于处理 Spring boot 属性加密的,在配置文件中使用特定格式直接配置密文,然后应用启动的时候,Jasypt 会自动将密码解密成明文供程序使用。jasypt 同一个密钥(secretKey)对同一个内容执行加密,每次生成的密文都是不一样的,但是根据根据这些密文解密成原内容都是可以的。生产环境用户的隐私数据,比如手机号、身份证或者一些账号配置等信息,入库时都要进行不落地脱敏,也就是在进入我们系统时就要实时的脱敏处理。原创 2023-03-06 18:09:23 · 1521 阅读 · 2 评论 -
【SpringBoot高级篇】SpringBoot集成Sharding-JDBC分库分表
数据库中的数据量不一定是可控的,在未进行分库分表的情况下,随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地,数据操作,增删改查的开销也会越来越大;分库分表就是为了解决由于数据量过大而导致数据库性能降低的问题,将原来独立的数据库拆分成若干数据库组成,将数据大表拆分成若干数据表组成,使得单一数据库、单一数据表的数据量变小,从而达到提升数据库性能的目的。简单来说,我们可以将对数据的水平切分理解为按照数据行进行切分,就是将表中的某些行切分到一个数据库表中,而将其他行切分到其他数据库表中。原创 2023-03-01 16:16:24 · 1135 阅读 · 0 评论 -
【SpringBoot高级篇】SpringBoot集成XXL-JOB分布式任务调度平台
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。原创 2023-01-29 11:05:54 · 1865 阅读 · 0 评论 -
【SpringBoot高级篇】SpringBoot集成RocketMQ消息队列
RocketMQ是阿里巴巴2016年MQ中间件,使用Java语言开发,在阿里内部,RocketMQ承接了例如“双11”等高并发场景的消息流转,能够处理万亿级别的消息。原创 2023-01-18 17:58:47 · 16563 阅读 · 1 评论 -
【SpringBoot应用篇】接入微信支付
微信支付原创 2021-06-23 11:34:26 · 2876 阅读 · 1 评论 -
【SpringBoot应用篇】阿里云OSS对象存储
阿里云OSS对象存储开通“对象存储OSS”服务创建Bucket上传测试图片获取用户acesskeys使用SDK文档pom创建存储空间以文件流上传文件服务实现搭建server-oss模块pomapplication.yml启动类配置网关测试SDK封装service接口封装controller接口swagger测试开通“对象存储OSS”服务创建Bucket上传测试图片1.开始上传文件获取用户acesskeys使用SDK文档文档首页 > 阿里云学习路径 > OSS 学习路原创 2021-06-20 10:44:29 · 1055 阅读 · 0 评论 -
【SpringBoot应用篇】手机号码登录
手机登录架构图原创 2021-06-19 10:48:18 · 557 阅读 · 0 评论 -
【SpringBoot应用篇】阿里云sms短信服务
阿里云sms短信服务阿里云短信介绍开通阿里云短信服务添加签名管理与模板管理获取用户AccessKey搭建server-msm模块导入Maven依赖application.yml启动类配置网关封装注册短信验证码接口配置工具类随机数工具类service接口和实现类controllercommon模块pom全局统一返回结果类Result统一返回结果状态信息类ResultCodeEnumRedisConfigSwagger2Configswagger测试阿里云短信介绍开通阿里云短信服务添加签名管理与模板管原创 2021-06-18 17:53:02 · 3854 阅读 · 0 评论 -
【SpringBoot应用篇】SpringBoot 业务代码中常用技巧
Spring MVC拦截器跟Spring拦截器相比,它里面能够获取和等web对象实例。方法 - 用于在将请求发送到控制器之前执行操作。此方法应返回true,以将响应返回给客户端。目标方法执行后执行请求完成时执行为了方便我们一般情况会用接口的实现类类。登录验证,判断用户是否登录。权限验证,判断用户是否有权限访问资源,如校验token日志记录,记录请求操作日志(用户ip,访问时间等),以便统计请求访问量。处理cookie、本地化、国际化、主题等。性能监控,监控请求处理时长等。原创 2023-01-05 09:45:19 · 928 阅读 · 2 评论 -
【SpringBoot应用篇】SpringBoot 启动扩展点/常用接口
这个接口实际上我们也是非常的熟悉,该接口在我们剖析注解配置AOP的时候是我们的老朋友,实际上,注解配置的AOP是间接实现 BeanPostProcess 接口的,而 InstantiationAwareBeanPostProcessor 就是继承该接口。一般情况下,Spring通过反射机制利用bean的class属性指定支线类去实例化bean,在某些情况下,实例化Bean过程比较复杂,如果按照传统的方式,则需要在bean中提供大量的配置信息。Spring为此提供了一个。原创 2023-01-04 14:39:44 · 1161 阅读 · 0 评论 -
【SpringBoot应用篇】SpringBoot集成j2cache二级缓存框架
j2cache是OSChina(开源中国)目前正在使用的两级缓存框架。L1: 进程内缓存 caffeine/ehcacheL2: 集中式缓存 Redis/Memcachedj2cache其实并不是在重复造轮子,而是作资源整合,即将Ehcache、Caffeine、redis、Spring Cache等进行整合。J2Cache 的使用场景: 由于大量的缓存读取会导致L2的网络成为整个系统的瓶颈,因此L1的目标是降低对L2的读取次数。该缓存框架主要用于集群环境中。原创 2023-01-01 15:02:17 · 2295 阅读 · 3 评论 -
【SpringBoot应用篇】SpringBoot集成AntiSamy防御XSS(跨站脚本攻击)--过滤器实现
XSS:跨站脚本攻击(Cross Site Scripting),为不和 CSS混淆,故将跨站脚本攻击缩写为XSS。XSS是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。有点类似于sql注入。XSS攻击原理:HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,例如,小于符号(原创 2022-12-29 22:23:12 · 1692 阅读 · 0 评论 -
【SpringBoot应用篇】【AOP+注解】SpringBoot使用Aspect AOP注解实现日志管理(增强版)
需求: 需要保存的日志内容在方法的参数中,并且方法参数的类型对象不一样,且对象的属性名称不一样。解决思路:1、添加类型转换器Convert接口,需要转换的类型继承Convert接口2、@Log注解中添加Convert接口类型的Class属性3、在切面环绕通知中进行处理。原创 2022-12-28 23:18:26 · 1453 阅读 · 1 评论 -
JWT介绍
JWT介绍JWT工具集成JWTpomJwtHelper工具类JWT工具JWT(Json Web Token)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源。比如用在用户登录上JWT最重要的作用就是对 token信息的防伪作用。JWT的原理, 一个JWT由三个部分组成:公共部分、私有部分、签名部分。最后由这三者组合进行base64编码得到JWT。公共部分主要是该JWT的相关原创 2021-06-18 13:12:22 · 416 阅读 · 0 评论 -
【SpringBoot应用篇】SpringBoot集成Knife4j在线接口文档
knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名knife4j是希望它能像一把匕首一样小巧,轻量,并且功能强悍!其底层是对Springfox的封装,使用方式也和Springfox一致,只是对接口文档UI进行了优化。核心功能文档说明:根据Swagger的规范说明,详细列出接口文档的说明,包括接口地址、类型、请求示例、请求参数、响应示例、响应参数、响应码等信息,对该接口的使用情况一目了然。在线调试。原创 2022-12-27 11:35:16 · 489 阅读 · 0 评论 -
【SpringBoot应用篇】SpringBoot+JasperReport导出PDF
JasperReport是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML,或者XML格式。该库完全由Java写成,可以用于在各种Java应用程序,包括J2EE,Web应用程序中生成动态内容。只需要将JasperReport引入工程中即可完成PDF报表的编译、显示、输出等工作。原创 2022-12-09 00:04:53 · 2160 阅读 · 1 评论 -
【SpringBoot应用篇】【AOP+注解】SpringBoot集成Mybatis实现多数据源配置+跨数据源事务
开发中经常有这样的需要:。微服务环境下可以实现一个服务读取一个数据库,另一个服务写库。但是在实际应用中有时也需要在一个服务中读写不同的数据库。可以在一个SpringBoot单体项目中配置多个数据源解决读写库分离。原创 2022-11-26 00:45:11 · 4448 阅读 · 0 评论 -
【SpringBoot应用篇】SpringBoot集成logback日志
<?xml version="1.0" encoding="UTF-8"?><configuration scan="true" scanPeriod="10 seconds"> <!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 --> <!-- scan:当此属性设置为true时,配置文件如果发生原创 2021-08-06 08:32:30 · 393 阅读 · 0 评论 -
【SpringBoot应用篇】SpringBoot集成JUnit单元测试
JUnit测试框架1. 概述2. JUnit 特点3. 第一个 JUnit 单元测试3.1 POM3.2 创建测试类4. JUnit 注解5. JUnit 断言5.1 什么是断言5.2 常用断言方法5.3 测试断言效果1. 概述JUnit 是用于编写和运行可重复的自动化测试的开源测试框架,这样可以保证我们的代码按预期工作。JUnit 可广泛用于工业和作为支架(从命令行)或IDE(如 IDEA)内单独的 Java 程序。JUnit 提供:断言测试预期结果。测试功能共享通用的测试数据。测试套件轻松原创 2021-07-20 15:12:21 · 7719 阅读 · 0 评论 -
【SpringBoot应用篇】【AOP+注解】SpringBoot+Redis基于注解实现接口幂等性校验
取请求头中的token,判断Redis中是否存在该token,若是存在,表示第一次发起支付请求,删除缓存中token后开始业务逻辑处理;1、客户端向系统发起一次申请token的请求,服务器系统生成token令牌,将token保存到Redis缓存中,并返回前端(令牌生成方式可以使用。WEB系统中: 就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生不同的结果。,不管执行成功多少次状态都是一致的,所以也是幂等操做。,每次执行的结果都会发生变化,这种不是幂等的。原创 2022-11-09 00:19:52 · 1248 阅读 · 1 评论 -
【SpringBoot应用篇】SpringBoot集成MybatisPlus+PageHelper分页
在项目中我们执行一个分页查询时,很多时候还会需要知道该查询的其他信息,如总数、每页数量、当前页数、上一页或下一页等等,这些信息如果每次都自己写的话就太麻烦了,而pagehelper能够帮助我们更方便地获取这些信息,大大方便了我们的开发效率。pagehelper是mybatis的一个插件,其作用是更加方便地进行分页查询。原创 2022-10-12 13:27:24 · 2106 阅读 · 0 评论 -
【SpringBoot应用篇】SpringBoot: 事件的发布和监听
ApplicationEvent以及Listener是Spring为我们提供的一个事件监听、订阅的实现,内部实现原理是观察者设计模式,设计初衷也是为了系统业务逻辑之间的解耦,提高可扩展性以及可维护性。ApplicationEvent就是Spring的事件接口ApplicationListener就是Spring的事件监听器接口,所有的监听器都实现该接口ApplicationEventPublisher是Spring的事件发布接口,ApplicationContext实现了该接口。原创 2022-09-14 13:24:48 · 4727 阅读 · 0 评论 -
【SpringBoot应用篇】Spring Boot中ImportBeanDefinitionRegistrar接口、ImportSelector接口的作用
1、ImportSelector接口,返回需要导入的组件的全类名数组。SpringBoot自动配置原理就是使用。2、ImportBeanDefinitionRegistrar接口:手动注册bean到容器。这个接口提供了通过spring容器api的方式直接向容器中注册bean。2个默认方法,都可以用来调用spring容器api来注册bean。接口,向容器中导入了大量的组件。......原创 2022-08-08 15:39:55 · 577 阅读 · 0 评论 -
【MybBatis高级篇】MyBatis 缓存机制
MyBatis 单表CRUD操作INSERTDELETE查询单个对象UPDATE使用模糊查询INSERT继续以 tb_user 表为例,修改映射文件,增加如下配置:<insert id="insert"> INSERT INTO tb_user ( id, username, password, phone, email, created, updated ) VALUES原创 2021-12-02 14:59:34 · 672 阅读 · 0 评论 -
【SpringBoot应用篇】Spring Boot中BeanPostProcessor接口、SmartInitializingSingleton接口的作用
这个接口是bean处理器,内部有2个方法,分别在bean初始化前后会进行调用。原创 2022-07-25 15:21:09 · 423 阅读 · 0 评论 -
【SpringBoot应用篇】SpringBoot集成P6Spy记录SQL日志
P6Spy是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架。通过P6Spy可以对SQL语句进行拦截,相当于一个SQL语句的记录器,这样我们可以用它来作相关的分析,比如性能分析。application.ymlentityMapper启动类测试类也可以打印输出的sql日志,但是不是我们想要的效果,如何来控制想要的sql日志输出,可以使用P6Spy开源产品。目录添加配置文件,类似,记录配置信息P6SPYConfigapplication.yml测试类不变......原创 2022-07-12 00:54:30 · 4990 阅读 · 3 评论 -
【SpringBoot应用篇】Spring Boot 配置HTTP 响应内容压缩
5、默认情况下,要执行压缩,响应的长度至少为 2048 字节,可以通过 server.compression.min-response-size 属性配置。6、默认情况下,仅当响应的内容类型为以下内容之一时,才会对其进行压缩,可以通过 mime-types 属性配置:text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xm......原创 2022-07-06 13:40:44 · 5573 阅读 · 0 评论 -
【SpringBoot应用篇】Spring Boot中CommandLineRunner接口的作用
Spring Boot中CommandLineRunner接口的作用实现CommandLineRunner接口的类会在bean被IOC容器装配完成之后被调用,适合预加载类及其它资源;也可以使用ApplicationRunner,使用方法及效果是一样的我们可以通过调整@Order的值来调整类执行顺序的优先级,即执行的先后;当然也可以将@Order注解更换为Ordered接口,效果是一样的@Component@Order(1)public class BlackPersion implements C原创 2022-02-24 14:47:58 · 1313 阅读 · 0 评论