![](https://img-blog.csdnimg.cn/55fe3f5f1e46406a875f1d6a6971cc9a.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
SpringBoot一本通
文章平均质量分 90
涉及到spring boot使用过程中的配置优化、自动装配、模板使用、生命周期、嵌入式容器、全局异常处理、全局日志管理、异步任务、定时任务、redis缓存及session共享、fastdfs整合、SSE及websocket实现、消息队列、邮件发送等。
字母哥哥
百人团队技术经理。2017年度吉林省软件行业协会“最卓越程序员奖”获得者。曾就职于微软,微软MVP。华为云享专家。
展开
-
[springboot专栏]-1.1.spring boot 产生的背景及其优势
在spring boot出现以前,使用spring框架的程序员是这样配置web应用环境的,需要大量的xml配置。下图展示了在xml配置的时代和SpringBoot的配置量的差别。随着web项目集成软件的不断增多,xml配置也不断的增多,xml配置文件也在不断地增多,项目的依赖管理也越发的原创 2022-02-13 13:41:41 · 704 阅读 · 0 评论 -
[springboot一本通]-1.2.helloworld及项目结构介绍
可以选择我们需要依赖的第三方软件类库,包括spring-boot-starter-web,mysql驱动,mybatis等。我们这里暂时就只添加一个依赖`Spring Web`,我们后文手动添加其他的maven依赖,这样更有益于大家的理解。等你熟悉了maven依赖项,以后新建Spring Boot项目可以直接在这里勾选。...原创 2022-02-13 13:49:05 · 547 阅读 · 0 评论 -
[springboot一本通]-1.3.需要先了解的核心概念
一、Spring Boot 、 Spring MVC 、Spring对比首先你需要明白一件事情:Spring Boot项目目的并不是替换Spring、SpringMVC,而是使他们用起来更加简单。Spring 框架Spring框架最核心的特性就是依赖注入DI(Dependency Injecttion)和控制反转IOC(Inversion Of Control)。如果你....原创 2022-02-13 14:05:16 · 491 阅读 · 0 评论 -
[springboot一本通]-1.4.提高开发效率工具lombok
使用lombok插件的好处如何安装lombok插件使用lombok提高开发效率二、使用lombok插件的好处我们在java开发过程中,经常会有一些常规性的,重复性的工作。比如:根据成员变量生成get和set方法根据成员变量生成类的构造函数重写toString()和hashCode方法引入日志框架logFactory,用来打印日志....原创 2022-02-13 14:12:06 · 550 阅读 · 0 评论 -
[springboot一本通]-1.5.IDEA环境下的热加载与热部署
在实际的开发过程中,我们经常修改代码之后,手动的重启项目,手动刷新浏览器查看修改效果。那么有没有一种方式能够快速的、自动的帮我们将修改代码自动更新,避免手动重启,从而提高开发效率呢?肯定是有的,但是对于这个功能很多人对功能的叫法有争议,笔者查询了维基百科、官方文档,没有得到合理的答案,也没有权威的定义,笔者知道的就有:热启动、热加载、热更新、热部署、热切换。这几个词从语义上是....原创 2022-02-14 13:44:11 · 616 阅读 · 0 评论 -
[springboot一本通]-1.6.开发过程中常用IDEA插件
本篇为大家介绍一些在开发过程中,经常可以使用到的一些IntelliJ IDEA插件和提高工作效率的方法,关于如何安装插件可以参考本专栏前面两小节的内容。一、Codota极其强大的代码自动补全[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RZp88ZmH-1644628724767)(images/20200526_153056.gif)]....原创 2022-02-14 14:05:13 · 780 阅读 · 0 评论 -
[springboot一本通]-2.1.RESTFul接口与http协议状态表述
API(Application Programming Interface),顾名思义:是一组编程接口规范,客户端与服务端通过请求响应进行数据通信。REST(Representational State Transfer)表述性状态传递,决定了接口的形式与规.原创 2022-02-14 14:16:54 · 652 阅读 · 0 评论 -
[springboot一本通]-2.2.1.Spring常用注解及Http数据转换
HTTP协议组成协议内容示例对应Spring注解path info传参/articles/12 (查询id为12的文章,12是参数)@PathVariableURL Query String传参/articles?id=12@RequestP.原创 2022-02-14 15:10:16 · 539 阅读 · 0 评论 -
[springboot一本通]-2.2.2.常用注解开发一个RESTful接口
在本专栏之前的章节中已经给大家介绍了《Spring的常用注解》、《提高开发效率必备插件lombok》以及《RESTful接口协议状态的表述》,本节内容就是将之前学到的内容以代码的方式体现出来。原创 2022-02-14 17:09:47 · 602 阅读 · 0 评论 -
[springboot一本通]-2.3.1 Jackson注解与PostMan测试
开源的Jackson:SpringBoot默认是使用Jackson作为JSON数据格式处理的类库,Jackson在各方面都比较优秀,所以不建议将Jackson替换为Gson或fastjson。Google的Gson:Gson是Google为满足内部需求开发的JSON数据处理类库,其核心结构非常简单,toJson与from....原创 2022-02-15 10:11:01 · 671 阅读 · 0 评论 -
[springboot一本通]-2.3.2.JSON格式处理利器Jackson全局配置
在Spring框架内使用Jackson的时候,通常需要一些特殊的全局配置,来应对我们JSON序列化与反序列化中出现的各种问题。Spring Boot 提供了两种配置方式,一是配置文件的方式原创 2022-02-15 14:40:21 · 987 阅读 · 0 评论 -
[springboot一本通]-2.4.注解方式实现Mock测试
之前的章节我们都是使用postman来进行接口测试的,本节我们来教大家使用注解及代码的方式来进行接口测试及Mock测试。原创 2022-02-15 16:07:23 · 575 阅读 · 0 评论 -
[springboot一本通]-2.5.使用Swagger2构建API文档
一、为什么要发布API接口文档当下很多公司都采取前后端分离的开发模式,前端和后端的工作由不同的工程师完成。在这种开发模式下,维护一份及时更新且完整的API 文档将会极大的提高我们的工作效率。传统意义上的文档都是后端开发人员使用word编写的,相信大家也都知道这种方式很难保证文档的及时性,这种文档久而久之也就会失去其参考意义,反而还会加大我们的沟通成本。...原创 2022-02-16 17:09:06 · 850 阅读 · 0 评论 -
[springboot一本通]-2.6.swagger在线接口文档导出离线阅读
在线文档,需要使用HTTP访问。但是在我们日常使用swagger接口文档的时候,有的时候需要接口文档离线访问,如将文档导出为html、markdown格式。又或者我们不希望应用系统与swagger接口文档使用同一个服务,而是导出HTML之后单独部署,这样做保证了对接口文档的访问不影响业务系统,也一定程度提高了接口文档的安全性。...原创 2022-02-17 16:03:47 · 960 阅读 · 0 评论 -
[springboot一本通]-2.7.Swagger3-即OpenAPI使用
OpenAPI是规范的正式名称。规范的开发工作于2015年启动,当时SmartBear(负责Swagger工具开发的公司)将Swagger 2.0规范捐赠给了Open API Initiative,该协会由来自技术领域不同领域的30多个组织组成。此后,该规范被重命名为OpenAPI规范。Swagger是一个 API文档维护组织,后来成为了 Open API 标准的主要定义者。现在最新的版本为17年发布的 Swagger3(Open Api3)。...原创 2022-02-17 17:40:46 · 2004 阅读 · 0 评论 -
[springboot一本通]-3.1.结合源码讲解bean自动装配原理
在本专栏一开始,我们就讲过Spring Boot大量的简化了配置。实际上这些配置还都存在,只是将一些不常用的配置隐藏了起来,不需要我们像以往一样逐一配置,从而减少了配置量、提高了开发效率。本文向大家介绍一下,Spring Boot实现自动配置加载的原理。...原创 2022-02-18 09:19:13 · 635 阅读 · 0 评论 -
[springboot一本通]-3.2.详解YAML语法及占位符语法
YAML是YAML Ain’t markup language的缩写,表明其不是一种标记语言(xml、html是标记语言)。它是一种数据序列化语言,通过一定的格式表示数据结构。原创 2022-02-18 09:35:25 · 1872 阅读 · 0 评论 -
[springboot一本通]-3.3.YAML配置绑定变量两种方式
PS:免费章节转载注明出处,本篇如果是收费章节禁止转载。违者必究。作者:字母哥博客本文出自:springboot深入浅出系列在之前的章节我们学习了YAML语法,它可以清晰的表达类、成员变量、集合以及他们之间的嵌套关系,这样一些数据结构。如果配置只停留在配置文件里面是没有意义的,我们需要将配置绑定到我们的内存变量上,从而用变量值去影响程序的运行行为。所以我们本节就为大家讲解配置与变量绑定的两种方法。一、使用@Value获取配置值通过@Value注解将family.family-name属性的值.原创 2022-02-19 06:21:09 · 1056 阅读 · 0 评论 -
[springboot一本通]-3.4.配置属性值数据绑定校验
我们都知道配置文件是需要开发人员手动来修改的,只要是人为参与就会有出错的可能。为了避免人为配置出错的可能,我们需要对配置属性值做校验。原创 2022-02-19 06:26:19 · 555 阅读 · 0 评论 -
[springboot一本通]-3.5.加载除application之外的配置文件的方式
有一些老的项目里面的jar包并未主动的去与spring boot 融合,很多jar包都有自己的配置文件。如果我们在spring boot项目中使用这些jar包就必须得使用它们的配置文件,那就面临一个问题:**我们的spring boot项目默认只有一个全局配置文件:application.yml或application.properties。该如何加载额外的配置文件?...原创 2022-02-19 19:15:20 · 898 阅读 · 1 评论 -
[springboot一本通]-3.6.使用SpEL表达式绑定配置项
Spring Expression Language (SpEL)是一种功能非常强大的表达式语言,可用于在运行时查询和操作对象。 SpEL书写在XML配置文件或者Annotation注解上,在Spring Bean的创建过程中生效。SpEL能用在很多的场景下,在这篇文章中,给大家介绍一下在Spring Boot中如何使用SpEL表达式读取配置属性。...原创 2022-02-20 07:23:32 · 997 阅读 · 0 评论 -
[springboot一本通]-3.7.profile不同环境使用不同配置
我们开发的服务通常会部署在不同的环境中,例如开发环境、测试环境,生产环境等,而不同环境需要不同的配置。最典型的场景就是在不同的环境下需要连接不同的数据库,需要使用不同的数据库配置。我们期待实现的配置效果是:减少配置修改次数,方便环境配置切换...原创 2022-02-20 07:28:36 · 522 阅读 · 4 评论 -
[springboot一本通]-3.8.配置及配置文件的加载优先级
spring boot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件.图中数值越小的标号优先级越高。原创 2022-02-21 05:08:18 · 630 阅读 · 0 评论 -
[springboot一本通]-3.9.Jasypt实现配置文件敏感字段加密
Jasypt是一个Java库,允许开发人员以很简单的方式添加基本加密功能,而无需深入研究加密原理。利用它可以实现高安全性的,基于标准的加密技术,无论是单向和双向加密。加密密码,文本,数字,二进制文件。...原创 2022-02-21 05:17:58 · 610 阅读 · 0 评论 -
[springboot一本通]-4.1.整合SpringJDBC操作数据
JDBC(Java DataBase Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。...原创 2022-02-22 05:03:14 · 577 阅读 · 0 评论 -
[springboot一本通]-4.2SpringJDBC多数据源的实现
随着应用的数据量增多,很可能会采用数据分库存储的方案,所以说对于我们的持久层代码可能面临在一个服务函数中操作多个数据库的场景。我们该如何通过配置去满足这样的场景?本节来为大家介绍。...原创 2022-02-22 05:07:58 · 998 阅读 · 2 评论 -
[springboot一本通]-4.3.SpringjdbcJTA实现分布式事务
XA是X/Open DTP组织(X/Open DTP group)定义的两阶段提交协议,XA被许多数据库(如Oracle、DB2、SQL Server、MySQL)和中间件等工具(如CICS 和 Tuxedo)支持 。 * **JTA规范**:JTA(Java Transaction API),是J2EE的编程接口规范,它是XA协议的JAVA实现。 某种程度上,可以认为JTA规范是XA规范的Java版。* Atomikos是一个分布式事务管理器,是JTA / XA的具体实现,提供的功能比JTA / X原创 2022-02-23 06:59:37 · 547 阅读 · 0 评论 -
[springboot一本通]-4.4.主流ORM持久层框架选型-mybatis&JPA
目前java 持久层ORM框架应用最广泛的就是JPA和Mybatis。JPA只是一个ORM框架的规范, 对该规范的实现比较完整就是Spring Data JPA(底层基于Hibernate实现),是基于Spring的数据持久层框架,也就是说它只能用在Spring环境内。Mybatis也是一个优秀的数据持久层框架,能比较好的支持ORM实体关系映射、动态SQL等。...原创 2022-02-23 07:04:19 · 1132 阅读 · 1 评论 -
[springboot一本通]-4.5.java bean\PO\VO\BO的赋值转换
为什么要做java bean赋值转换在实际的开发过程中,由于业务的复杂性,通常并不能做到一个model实体贯穿持久层、服务层、控制层。通常需要进行实体对象java bean的赋值转换。原创 2022-02-23 20:23:56 · 1240 阅读 · 3 评论 -
[springboot一本通]-4.6.整合SpringDataJPA操作数据
**Spring Data JPA** 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的一套 JPA 应用框架,底层使用了 Hibernate 的 JPA 技术实现,可使开发者用极简的代码即可实现对数据的访问和操作。它提供了包括增删改查等在内的常用功能接口,且易于扩展!学习并使用 Spring Data JPA 可以极大提高开发效率!...原创 2022-02-24 09:23:01 · 490 阅读 · 0 评论 -
[springboot一本通]-4.6.1.Spring Data JPA实现分页排序
如果一次性加载成千上万的列表数据,在网页上显示将十分的耗时,用户体验不好。所以处理较大数据查询结果展现的时候,分页查询是必不可少的。分页查询必然伴随着一定的排序规则,否则分页数据的状态很难控制,导致用户可能在不同的页看到同一条数据。那么,本文的主要内容就是给大家介绍一下,如何使用Spring Data JPA进行分页与排序。...原创 2022-02-24 09:52:50 · 527 阅读 · 0 评论 -
[springboot一本通]-4.7.Spring data JPA的多数据源实现
1. 将数据源对象作为参数,传递到调用方法内部,这种方式增加额外的编码。如:4.2章节中提到的实现方式2. 将Repository操作接口分包存放,Spring扫描不同的包,自动注入不同的数据源。这种方式实现简单,也是一种“约定大于配置”思想的典型应用。本文将以这种方式实现JPA的多数据源支持...原创 2022-02-24 17:20:32 · 766 阅读 · 0 评论 -
[springboot一本通]-4.8.JPA+atomikos实现分布式事务
* DataSourceProperties数据源配置、Datasource数据源、EntityManager实体管理器都是2套。分别是primary和secondary* 实体和Repository的扫描目录也是2组,分别是testdb和testdb2* 但是事务管理器只有一个,那就是transactionManager,是基于atomikos实现的。事务管理器只有一个,决定了不同的数据源使用同一个事务管理器,从而实现分布式事务。...原创 2022-02-25 07:48:34 · 682 阅读 · 0 评论 -
[springboot一本通]-4.9.1.整合Mybatis Generator操作数据
为了增强Mybatis的功能性和易用性,有两种比较常用的方案* Mybatis Genenrator * Mybatis Plus我们本小节为大家介绍Mybatis Genenrator 的核心用法原创 2022-02-25 07:53:25 · 510 阅读 · 0 评论 -
[springboot一本通]-4.9.2.整合mybatisPlus操作数据库
MybatisPlus与Mybatis 自动生成的代码并不冲突,可以在同一个项目里面使用,但是命名上要区分一下避免混淆。比如MybatisGenerator生成的叫做ArticleMapper,我们使用MybatisPlus的时候可以换一个名字ArticlePlusMapper。但是笔者并不建议这么使用,如果编码人员的素质一般,容易把项目搞得乱糟糟的。...原创 2022-02-25 09:08:34 · 1208 阅读 · 1 评论 -
[springboot一本通]-4.10.Mybatis开发实践总结
mybatis代码实现方式1. 使用mybatis generator做代码自动生成,或者使用MybatisPlus解决方案2. 使用XML方式实现3. 使用注解方式实现以上三种实现方式,有自己适合的应用场景,按照4.9章节中集成方式,三种方法全部可以支持。下面是结合笔者多年的mybatis使用经验,总结出在不同的场景下,使用不同的实现方式...原创 2022-02-26 11:49:32 · 783 阅读 · 2 评论 -
[springboot一本通]-4.11.springmybatis的多数据源实现
本节采用的多数据源的实现方式,仍然是分包策略(与之前的JPA实现多数据源的方式是一致的)。即:操作接口分包存放,Spring扫描不同的包,自动注入不同的数据源。这种方式实现简单,也是一种“约定大于配置”思想的典型应用。...原创 2022-02-27 07:55:41 · 481 阅读 · 2 评论 -
[springboot一本通]-4.12.1.mybatis+atomikos实现分布式事务
两个数据源的名称分别是:primary和secondary。分别访问testdb和testdb2数据库。另外注意:驱动类是MysqlXADataSource(支持分布式事务),而不是MysqlDataSource。原创 2022-02-27 08:01:48 · 973 阅读 · 1 评论 -
[springboot一本通]-4.12.2.mybatisplus+atomikos实现分布式事务
前面章节介绍的多数据源的实现方式不适用于Mybatis plus Mapper。我们该如何实现Mybatis plus Mapper的多数据源以及分布式事务?方案一:采用Mybatis Plus官网上实现的基于AOP以及注解的动态数据源切换方案。基于AOP以及注解的动态数据源切换方案。这个方案的优点是:数据源灵活切换。但缺点也同样明显:需要为每一个类或者持久层方法指定数据源,如果编码人员素质一般,很容易错误的使用数据源。动态切换数据源,也就意味着“从使用的角度”出错的概率变大。从而导...原创 2022-02-27 08:26:18 · 1412 阅读 · 0 评论 -
[springboot一本通]-4.13.Spring事务与分布式事务
事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元,组成事务的所有操作只有在所有操作均能正常执行的情况下方能提交,只要其中任一操作执行失败(出现异常),都将导致整个事务的回滚。简单地说,事务提供一种“要么什么都不做,要么做全套(All or Nothing)”机制。明白上面的这几句话,ACID就不用看了,ACID就是对这句话的一个解释。....原创 2022-02-27 08:32:14 · 542 阅读 · 3 评论