
SpringBoot系列
相对于传统的 SpringMVC 开发模式,SpringBoot 的门槛极低,开箱即用。本系列以实战为线索,分享一系列的
SpringBoot 自学教程,希望可以帮助到 SpringBoot 的初学者
Asurplus、
书山有路勤为径,学海无涯苦作舟!
-
原创 【SpringBoot】四十一、SpringBoot中使用脚本命令启动、停止程序
我们经常部署 SpringBoot 应用,一般将应用打包成 jar 包的方式上传至服务器,通过命令启动程序,我们每次都需要去手动敲命令来控制程序的启停,容易出错,我们可以通过脚本的方式,记住一些常用的命令1、后端启动nohup java -jar test-1.0.jar > nohup.out 2>&1 &启动后,并将日志输出到 nohup.out 文件中2、修改配置启动nohup java -jar test-1.0.jar --server.port=80812021-01-19 14:47:2927
0
-
原创 【SpringBoot】一、创建第一个SpringBoot项目
创建SpringBoot项目可以通过两种方式,1、通过访问:https://start.spring.io/,SpringBoot的官方网站进行创建SpringBoot项目;2、通过工具(例如:Idea)创建SpringBoot项目。本次使用开发工具:Idea创建我的第一个SpringBoot项目。首先,打开我们的Idea开发工具选择Create New Poject(创建一个新的项目)...2019-08-04 21:59:4810144
622
-
原创 【SpringBoot】二、SpringBoot中配置文件详解
SpringBoot使用一个全局的配置文件,配置文件名是固定的,支持两种格式1、两种格式(properties,yml)application.propertiesapplication.yml由此可以看出 application.yml 文件格式的内容更为简洁,清晰,目前大部分都是 YML 格式,我们主要讲 YML 格式的配置文件注意:1、以空格的缩进来控制层级关系,左对齐的一列...2020-04-14 23:09:391300
88
-
原创 【SpringBoot】三、SpringBoot中整合Thymeleaf
SpringBoot 为我们提供了 Thymeleaf 自动化配置解决方案,所以我们在 SpringBoot 中使用 Thymeleaf 非常方便一、简介Thymeleaf是一个流行的模板引擎,该模板引擎采用Java语言开发,模板引擎是一个技术名词,是跨领域跨平台的概念,在Java语言体系下有模板引擎,在C#、PHP语言体系下也有模板引擎。除了thymeleaf之外还有Velocity、Fr...2020-04-16 21:41:0911317
171
-
原创 【SpringBoot】四、SpringBoot中整合Freemarker
FreeMarker 是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本( HTML 网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个 Java 类库,是一款程序员可以嵌入他们所开发产品的组件。FreeMarker 是一个很值得去学习的模版引擎。它是基于模板文件生成其他文本的通用工具。本文主要介绍在 SpringBoot 中如何整合 FreeM...2020-04-19 23:24:212052
104
-
原创 【SpringBoot】五、SpringBoot中全局异常统一处理
在服务器端出现异常,或者客户端请求出错时,直接返回异常信息对用户来说是非常不友好的,我们需要对异常信息进行统一处理1、使用 @ControllerAdvice 注解的控制层的全局统一异常处理@ControllerAdvicepublic class GlobalExceptionHandler { @ExceptionHandler(Exception.class) pub...2020-04-16 22:40:14673
2
-
原创 【SpringBoot】六、SpringBoot中拦截器功能的实现
Spring Boot 1.5,都是靠重写 WebMvcConfigurerAdapter 的方法来添加自定义拦截器SpringBoot 2.0 后,推荐实现 WebMvcConfigurer 或者继承 WebMvcConfigurationSupport 实现本次我们选择实现 WebMvcConfigurer 接口实现拦截器功能创建 MyWebConfigurer.java,并实现 Web...2020-04-17 20:17:35607
2
-
原创 【SpringBoot】七、SpringBoot中未登录拦截
我们需要在项目中对未登录的用户进行拦截,使其登录后才能访问1、创建 LoginInterceptor.java,实现 HandlerInterceptor 接口@Componentpublic class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(H...2020-04-16 22:55:12618
31
-
原创 【SpringBoot】八、SpringBoot中使用Cors开启跨域
一、为什么要跨域?跨域问题来源于JavaScript的【同源策略】,即只有【协议+主机名+端口号】相同,则允许相互访问。也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。跨域问题是针对JS和Ajax的,HTML本身没有跨域问题,比如a标签、script标签、甚至form标签(可以直接跨域发送数据并接收数据)等。二、实现跨域的两种方式1、JSONP...2019-08-16 21:18:43452
0
-
原创 【SpringBoot】九、SpringBoot中利用AOP切面开启全局事务管理
在 JavaEE 的开发过程中,service 方法用于处理主要的业务逻辑,而业务逻辑的处理往往伴随着对数据库的多个操作,我们并不能保证业务逻辑可以完全正确地执行,我们需要在业务逻辑中加入事务管理,一旦程序出错,数据库可以回滚,保证数据的准确性1、创建 TransactionConfig.java 文件import org.aspectj.lang.annotation.Aspect;imp...2020-04-19 23:48:471160
43
-
原创 【SpringBoot】十、SpringBoot中整合JdbcTemplate
在 Java 中,我们一般使用 JdbcTemplate、JPA、MyBatis 等数据持久化方案,当然,最简单的就是 Spring 自带的 JdbcTemplate,下面我们就一起来看看吧1、引入 JdbcTemplate 依赖<!-- mysql --><dependency> <groupId>mysql</groupId> ...2020-04-20 20:07:49483
28
-
原创 【SpringBoot】十一、SpringBoot中使用Lombok
未使用 lombok 的时候,我们还在写着 getter、setter、toString 方法的冗余代码,这些代码毫无技术含量可言,非常影响美观,于是我们开始使用 lombok1、引入 lombok 依赖<!-- lombok插件 --><dependency> <groupId>org.projectlombok</groupId>...2020-04-20 20:25:52441
6
-
原创 【SpringBoot】十二、SpringBoot中支持Https协议
一、https简介超文本传输安全协议(HyperText Transfer Protocol Secure),缩写:HTTPS;常称为 HTTP over TLS、HTTP over SSL 或 HTTP Secure)是一种通过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证...2019-09-19 14:20:53742
25
-
原创 【SpringBoot】十三、SpringBoot中发送短信验证码
短信验证码在今天已经普遍用于各类软件中,主要用户身份验证,注册、登录等,那今天就来学习一下如何在 SpringBoot 中发送短信验证码,这里我使用的是 榛子云1、首先,我们需要注册 榛子云 平台的开发账号,获取应用信息注册地址:http://sms_developer.zhenzikj.com/zhenzisms_user/register.html这里用于测试,我注册了个人开发账户...2020-03-18 21:09:36616
2
-
原创 【SpringBoot】十四、SpringBoot中发送邮件详解
前言:通过前面快速学习了SpringBoot之后,便很快爱上了SpringBoot,今天学习了使用SpringBoot发送邮件的相关知识,便想着记录一下。一、首先,我们需要在pom.xml文件中引入发送邮件的依赖<!-- 发送邮件依赖 --><dependency> <groupId>org.springframework.boot</g...2019-08-09 18:03:521217
70
-
原创 【SpringBoot】十五、SpringBoot中使用Kaptcha实现验证码
当我们在项目中登录使用验证码的时候,不妨试试Kaptcha生成验证码,非常简单1、我们在pom.xml文件中引入kaptcha的maven依赖<!-- kaptcha验证码 --><dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha<...2019-09-26 22:58:18514
27
-
原创 【SpringBoot】十六、SpringBoot中整合Swagger2
接口文档在我们日常开发工作中起到不可或缺的作用,特别是前后端分离的项目,需要使用接口文档来进行通信,而 Swagger2 是开源免费使用的,是一个减轻我们工作量的一款不错的工具1、引入 Swagger2 依赖<!-- swagger2 --><dependency> <groupId>io.springfox</groupId> ...2020-04-21 15:31:26718
51
-
原创 【SpringBoot】十七、SpringBoot中整合Redis
本次,我们以IDEA + SpringBoot作为 Java中整合Redis的使用 的测试环境,如果对创建SpringBoot项目有不清楚的地方,可以参考我的博客!!!首先,我们需要导入Redis的maven依赖<!-- Redis的maven依赖包 --> <dependency> <groupId>org.springframework.b...2019-08-03 18:05:57424
1
-
原创 【SpringBoot】十八、SpringBoot中使用Session共享实现分布式部署
前言:我们知道,在单体项目中,我们将用户信息存在 session 中,那么在该 session 过期之前,我们都可以从 session 中获取到用户信息,通过登录拦截,进行操作但是分布式部署的时候,我们请求的服务器可能不是同一台服务器,那么我们就必须要面对 session 共享的问题,下面介绍的是在 SpringBoot 实现 session 共享的方式一、创建项目创建 SpringBoot 项目,选择 Maven 依赖最终 pom.xml 文件如下:<!-- redis的依赖 --&g2020-06-10 23:11:5215589
154
-
原创 【SpringBoot】十九、SpringBoot中实现启动任务
我们在项目中会用到项目启动任务,即项目在启动的时候需要做的一些事,例如:数据初始化、获取第三方数据等等,那么如何在SpringBoot 中实现启动任务,一起来看看吧SpringBoot 中提供了两种项目启动方案,CommandLineRunner 和 ApplicationRunner一、CommandLineRunner使用 CommandLineRunner ,需要自定义一个类区实现 CommandLineRunner 接口,例如:import org.springframework.boot.2020-06-14 21:35:169370
663
-
原创 【SpringBoot】廿、SpringBoot中打war包需要注意
最近在做一个项目,遇到了项目打成 war 包的一个问题,项目创建时选择的时 jar 包方式,后因项目部署要求,需要打成 war 包部署,遇到很多坑,在此做一下记录一、修改打包方式原:<version>0.0.1-SNAPSHOT</version><packaging>jar</packaging>改后:<version>0.0.1-SNAPSHOT</version><packaging>war</p2020-06-14 22:00:0210507
158
-
原创 【SpringBoot】廿一、SpringBoot中使用Cookie实现记住登录
最近在做项目,甲方提出每次登录都要输入密码,会很麻烦,要求实现一个记住登录状态的功能,于是便使用Cookie实现该功能一、Cookie 简介Cookie,一种储存在用户本地终端上的数据,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。其实Cookie就是一个键和一个值构成的,随着服务器端的响应发送给客户端浏览器。然后客户端浏览器会把Cookie保存起来,当2020-06-28 14:55:4114342
119
-
原创 【SpringBoot】廿二、SpringBoot中整合knife4j接口文档
在项目开发中,web项目的前后端分离开发,APP开发,需要由前后端工程师共同定义接口,编写接口文档,之后大家都根据这个接口文档进行开发,到项目结束前都要一直维护接口文档使得项目开发过程中前后端工程师有一个统一的文件进行沟通交流开发,项目维护中或者项目人员更迭,方便后期人员查看、维护一、界面先赏1、首页2、接口文档3、调试二、整合 knife4j1、引入 maven 依赖<!-- knife4j接口文档 start --><dependency> <2020-07-02 14:47:0811046
364
-
原创 【SpringBoot】廿三、SpringBoot中整合Shiro实现权限管理
之前在 SSM 项目中使用过 shiro,发现 shiro 的权限管理做的真不错,但是在 SSM 项目中的配置太繁杂了,于是这次在 SpringBoot 中使用了 shiro,下面一起看看吧一、简介Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。三个核心组件:1、Subject:即“当前操作用户”。但是,在 Shiro 中,Subje2020-07-12 16:53:3111822
118
-
原创 【SpringBoot】廿四、SpringBoot中实现数据字典
我们在日常的项目开发中,对于数据字典肯定不模糊,它帮助了我们更加方便快捷地进行开发,下面一起来看看在 SpringBoot 中如何实现数据字典功能的一、简介1、定义 数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明,使用数据字典为简单的建模项目。简而言之,数据字典是描述数据的信息集合,是对系统中使用的所有数据元素的定义的集合。 数据字典(Data dictionary)是一种用户可以访问的记录数据库和应用程序元数据的2020-07-17 11:41:4412912
137
-
原创 【SpringBoot】廿五、SpringBoot中使用Quartz管理定时任务
定时任务在系统中用到的地方很多,例如每晚凌晨的数据备份,每小时获取第三方平台的 Token 信息等等,之前我们都是在项目中规定这个定时任务什么时候启动,到时间了便会自己启动,那么我们想要停止这个定时任务的时候,就需要去改动代码,还得启停服务器,这是非常不友好的事情直至遇见 Quartz,利用图形界面可视化管理定时任务,使得我们对定时任务的管理更加方便,快捷一、Quartz 简介Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵 活性而不牺牲2020-07-21 15:55:4710734
117
-
原创 【SpringBoot】廿六、SpringBoot中整合MyBatis-Plus
MyBatis 框架相信大家都用过,虽然 MyBatis 可以直接在 xml 中通过 SQL 语句操作数据库,很是灵活。但正其操作都要通过 SQL 语句进行,就必须写大量的 xml 文件,很是麻烦。于是 MyBatis-Plus 应运而生,作为 MyBatis 的增强工具,更是为我们开发效率得到了质的飞跃。一、简介1、MyBatisMyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBa2020-07-23 21:13:4410694
119
-
原创 【SpringBoot】廿七、SpringBoot中使用Ehcache
EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点,是 Hibernate 中默认的CacheProvider。用惯了 Redis,很多人可能已经忘记了还有 EhCache 这么一个缓存框架一、简介EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点,是 Hibernate 中默认CacheProvider。Ehcache 是一种广泛使用的开源 Java 分布式缓存。主要面向通用缓存,Java EE 和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,2020-07-24 15:01:0311339
480
-
原创 【SpringBoot】廿八、SpringBoot中使用JeecgBoot的Autopoi导出Excel
说到导出 Excel,我们首先会想到 poi、jsxl 等,使用这些工具会显得笨重,学习难度大。今天学习使用 JeecgBoot 中的 Autopoi 导出 Excel,底层基于 easypoi,使用简单,还支持数据字典方式一、开发前戏1、引入 maven 依赖<!-- AutoPoi Excel工具类--><dependency> <groupId>org.jeecgframework</groupId> <artifactId2020-08-05 20:51:3912182
113
-
原创 【SpringBoot】廿九、SpringBoot中定制异常页面
定制异常页面,可以避免用户产生恐慌心理,使得产品有更好的用户体验。今天来学习在 SpringBoot 中如何定制开发异常页面一、历史回顾在 SpringMVC 年代,我们的异常页面一般配置在 web.xml 文件中,如下:<!-- 配置404页面 --><error-page> <error-code>404</error-code> <location>/error/404.html</location>2020-08-07 15:44:202936
118
-
原创 【SpringBoot】三十、SpringBoot中如何启动多个工程实例
最近学习到 SpringCloud,需要进行服务注册,启动多个实例,那么在 IDEA 开发工具中,如何启动多个工程实例,下面一起来看看吧1、IDEA 中我们需要在开发阶段启动多个工程实例,我们可以这样做然后,勾选中 Allow parallel runAllow parallel run – 允许多个相同的实例运行当我们启动了一个实例后,修改 application.yml 中的 server-port# 服务端口server: port: 8762使得不同的工程实例运行在不同的端2020-08-25 21:24:45528
0
-
原创 【SpringBoot】三十一、搭建SpringBoot父子Module工程项目
在本系列第一篇文章,我们讲解了如何在 IDEA 中搭建第一个 SpringBoot 项目:【SpringBoot】一、创建第一个SpringBoot项目,本篇文章,我们讲解如何在 IDEA 中搭建 SpringBoot 的父子 Module 工程项目1、Module 工程项目 简介多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理。尤其是一些开源框架,也是采用多模块的方式,提供插件集成,用户可以根据需要配置指定的模块。2、创建一个 SpringBoot 项目就是创2020-08-25 22:09:354292
188
-
原创 【SpringBoot】三十二、SpringBoot项目Jar包如何瘦身部署
一、背景SpringBoot 为我们快速开发提供了很好的架子,使得我们只需要少量配置就能开始我们的开发工作,但是当我们需要打包上传部署时,却是很神伤的一个问题,因为打出来的 Jar 包少则十几兆,多则一百来兆,我们需要上传至公网服务器时,是非常慢的,这就引出了今天的主题,SpringBoot项目Jar包如何瘦身部署1、思路分析 jar,我们可以看出,jar 包里面分为以下三个模块分为 BOOT-INF,META-INF,org 三个部分,打开 BOOT-INF可以看到有 classes,li2020-09-04 11:23:4514057
116
-
原创 【SpringBoot】三十三、SpringBoot+LayUI后台管理系统开发脚手架
本期给大家推荐我自己写一个开源项目:springboot-mini,本着减少大量重复开发工作的原则,使得在项目中能够实现快速开发1、前言本项目本着避免重复造轮子的原则,建立一套快速开发JavaWEB项目(springboot-mini),能满足大部分后台管理系统基础开发功能,使得开发人员直接可从业务模块开始,减少大量的重复开发工作。前端框架使用 layui-mini(https://gitee.com/zhongshaofa/layuimini)2、项目地址https://gitee.com/asu2020-09-05 10:06:0213886
218
-
原创 【SpringBoot】三十四、SpringBoot整合Redis实现序列化存储Java对象
前面我们已经介绍过【SpringBoot】十七、SpringBoot 中整合 Redis,我们可以看出,在 SpringBoot 对 Redis 做了一系列的自动装配,使用还是非常方便的一、背景1、思考‘通过我们前面的学习,我们已经可以往 Redis 中存入字符串,那么我们要往 Redis 中存入 Java 对象该怎么办呢?2、方案我们可以将 Java 对象转化为 JSON 对象,然后转为 JSON 字符串,存入 Redis,那么我们从 Redis 中取出该数据的时候,我们也只能取出字符串,并转2020-10-23 10:27:234939
458
-
原创 【SpringBoot】三十五、SpringBoot整合Redis监听Key过期事件
在实际的开发项目中,监听 key 的过期事件,应用非常广泛,例如:订单超时未支付,优惠券过期等等一、修改 Redis 配置文件1、在 Redis 的安装目录2、找到 redis.windows.conf 文件,搜索 “notify-keyspace-events”修改为 “notify-keyspace-events Ex”,这样我们的 Redis 就支持 key 过期事件的监听了二、注入redisMessageListenerContainer注意:本偏文章衔接与上篇文章:【Sprin2020-10-23 11:04:3311531
489
-
原创 【SpringBoot】三十六、SpringBoot整合Redis实现发布/订阅
一、简介1、发布订阅SUBSCRIBE, UNSUBSCRIBE 和 PUBLISH 实现了 发布/订阅消息范例,发送者 (publishers) 不用编程就可以向特定的接受者发送消息 (subscribers). Rather, 发布的消息进入通道,不需要知道有没有订阅者. 订阅者发表感兴趣的一个或多个通道,并且只接受他们感兴趣的消息,不管发布者是不是存在. 发布者和订阅者的解耦可以允许更大的伸缩性和更多动态的网络拓扑。2、说明本篇文章是继:【SpringBoot】三十四、SpringBoot2020-10-23 11:31:1210961
399
-
原创 【SpringBoot】三十七、SpringBoot整合EasyPoi自定义字典导出Excel
前面我们介绍了 SpringBoot 中使用 JeecgBoot 的 Autopoi 导出 Excel,其实 Autopoi 的底层也是 EasyPoi,对于 Excel 的导入/导出也是非常方便的。那 EasyPoi 也是基于 POI 的,如果对这方面想要深究的,可以先看看原生 POI 的导入/导出方式,你会回来选择 EasyPoi 的一、简介EasyPoi 功能如同名字 easy,主打的功能就是容易,让一个没见接触过poi的人员就可以方便的写出 Excel 导出,Excel 模板导出,Excel 导2020-11-06 20:37:5712123
269
-
原创 【SpringBoot】三十八、SpringBoot引入Websocket后打包报错
一、背景今天在之前的 SpringBoot 项目中 引入了 Websocket,因为之前都弄过,所以开发测试阶段都很顺利,到了打包上传的时候就报错了,报错信息如下:XxxxxApplicationTests.contextLoads » IllegalState Failed to load ApplicationCon…大概意思就是无法加载应用程序之类的提示语吧,问题出在测试类,XxxxxApplicationTests,测试类代码如下:package com.asurplus;import2020-11-22 20:21:341180
76
-
原创 【SpringBoot】三十九、SpringBoot上传文件至项目resources目录下
当我们没有搭建单独的文件服务器时,我们需要将文件上传至项目目录下,今天我们就学习如何上传文件到项目的resources目录下一、引入依赖<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version></depende2020-11-24 11:28:303761
52