
从头开始学SpringBoot
文章平均质量分 79
本专栏系统地梳理了SpringBoot的各个核心知识点,并对其进行讲解和演示。
lwen.steven
学好Java,为公司“添砖加瓦”!
展开
-
32.跨域访问
对于前后端分离项目,如果前端项目与后端项目部署在两个不同的域下,那么势必会引起跨域问题的出现。针对跨域问题,常用的解决方案是使用jsoup,但是jsoup方式存在一些不足,例如只能通过get请求方式来传递参数,当然还有其它的不足之处。在SpringBoot中可以通过CORS(Cross-Origin Resource Sharing,跨域资源共享)协议来解决跨域问题,CORS是一个W3C标准,它允许浏览器向不同资源的服务器发出XmlHttpRequest请求,然后使用Ajax进行请求访问。Spring-M原创 2020-07-21 17:55:21 · 192 阅读 · 0 评论 -
31.自定义starter
1.starter简介SpringBoot提供的starter都是以spring-boot-starter-xxx的方式命名的,针对自定义starter,官方建议以xxx-spring-boot-starter命名予以区分。2.使用Spring Initializr创建starter项目步骤1:在Intellij IDEA界面中,单击【File】->【New】->【Project】,在弹出的窗口中选择【Maven】选项,然后勾选Create from archetype后选择maven-a原创 2020-07-21 17:54:50 · 201 阅读 · 0 评论 -
30.起步依赖
1.起步依赖简介SpringBoot提供了众多起步依赖来降低项目依赖的复杂度。起步依赖本质上是一个Maven项目对象模型,定义了对其它库的传递依赖,这些依赖的集合可以对外提供某项功能。起步依赖的命名表明它们提供某种或者某类功能,如spring-boot-starter-jdbc表示提供JDBC相关的功能,spring-boot-starter-jpa表示提供JPA相关的功能等。下表列出了项目开发中常用的起步依赖。名称描述spring-boot-starter-parent常被作为父原创 2020-07-21 00:08:56 · 1269 阅读 · 0 评论 -
29.SpringBoot执行流程
SpringBoot完整启动流程如下图所示。(1).项目启动时,调用入口类SpringBootApplication(SpringBootApplication中的SpringBoot为项目名称)的main方法。(2).入口类SpringBootApplication的main方法会调用SpringApplication的静态方法run。(3).在run方法中首先创建一个SpringApplication对象实例,然后调用SpringApplication对象实例的run方法。(4).查询和加载所原创 2020-07-17 17:35:59 · 1841 阅读 · 0 评论 -
28.SpringBoot入口类原理解析
1.SpringBoot入口类通过Spring Initializr新建项目,SpringBoot会自动生成如下所示的入口启动类。@SpringBootApplicationpublic class AppApplication { public static void main(String[] args) { SpringApplication.run(AppApplication.class, args); }}2.@SpringBootApplication原理@Sprin原创 2020-07-17 17:34:44 · 772 阅读 · 0 评论 -
27.自定义EndPoint
1.自定义EndPoint简介spring-boot-starter-actuator模块中已经提供了大量原生端点,根据端点作用,可将原生端点分为以下三类。应用配置类:获取应用程序中加载的应用配置、环境变量、自动化配置报告等与SpringBoot应用密切相关的配置类信息。度量指标类:获取应用程序在运行过程中用于监控的度量指标,如内存信息、线程池信息和HTTP请求统计等。操作控制类:提供了对应用的关闭等操作类功能。如果spring-boot-starter-actuator模块提供的原生端点无法满足原创 2020-07-17 17:34:10 · 1012 阅读 · 0 评论 -
26.集成监控组件Actuator
1.Actuator简介SpringBoot大部分模块都是用于开发业务功能或者连接外部资源的。除此之外,SpringBoot还提供了Actuator模块来管理和监控应用,Actuator是一个用于暴露自身信息的模块,可以有效地减少监控系统在采集应用指标时的开发量。Actuator提供了监控和管理端点以及一些常用的扩展和配置方式,具体如下表所示。路径(端点名)描述鉴权/health显示应用监控指标false/beans查看Bean及其关系列表false/info原创 2020-07-17 17:32:34 · 826 阅读 · 0 评论 -
25.项目部署
1.SpringBoot内置TomcatTomcat是一个免费开源的Web应用服务器,属于轻量级应用服务器。查看spring-boot-starter-web依赖可知,SpringBoot默认使用Tomcat作为内嵌的Servlet容器。如果想要使用其它Servlet容器作为SpringBoot默认内置容器,只需要修改spring-boot-starter-web依赖即可。如使用Jetty作为SpringBoot默认内置容器,在pom.xml中做如下修改。<dependencies> &原创 2020-07-17 17:32:01 · 133 阅读 · 0 评论 -
24.多环境配置
1.多环境配置简介项目开发过程中,不同角色会使用不同的环境,如开发人员会使用开发环境、测试人员会使用测试环境,此外项目开发完成后也会被部署到线上环境。不同环境往往需要不同的配置,如MySQL、Redis、MQ消息中间件等,环境之间相互独立与隔离才不会相互影响,才便于部署和提高效率。2.项目准备复制一份“集成MyBatis”的项目代码,修改项目名称为profiles。然后在线上数据库新建一个名为mydb的数据库,在mydb中新建一个名为user的数据表,然后往数据表里插入1条数据,具体SQL语句如下。原创 2020-07-17 17:31:28 · 493 阅读 · 0 评论 -
23.集成测试框架Mockito
1.Mockito简介Mockito是用于生产模拟对象的工具,其特点是对于某些不容易构造(如HttpServletRequest)或者不容易获取的复杂对象(如JDBC中的ResultSet),可用一个虚拟对象(Mock)来完成测试。Mockito最大的优点是可将单元测试的耦合分解开,即如果代码中对另一个类或者接口有依赖,Mockito可模拟这些依赖,并协助验证所调用的依赖行为。2.引入依赖新建一个SpringBoot工程,并在pom.xml文件中添加集成Mockito所需要的dependency。本小原创 2020-07-17 17:30:44 · 710 阅读 · 0 评论 -
22.集成单元测试
1.单元测试简介项目在投入生产之前,需要进行大量的测试。SpringBoot作为分布式微服务架构的脚手架,需要集成单元测试来避免有缺陷的软件发布到生产环境。2.引入依赖新建一个SpringBoot工程,并在pom.xml文件中添加集成单元测试所需要的dependency。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-w原创 2020-07-17 17:30:08 · 161 阅读 · 0 评论 -
21.集成文档生成组件Swagger
1.Swagger简介Swagger是一个自动生成Restful接口的文档功能测试框架。2.引入依赖新建一个SpringBoot工程,并在pom.xml文件中添加集成Swagger所需要的dependency。<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId></dependency><depende原创 2020-07-17 17:29:35 · 278 阅读 · 0 评论 -
20.集成邮件组件Email
1.Email简介Sun公司为Java开发者提供了一款邮件发送和接收的开源类库JavaMail,支持常用的邮件协议,如SMTP(是电子邮件传输的互联网标准,定义在RFC5321,默认端口25)、POP3(主要用于支持使用客户端的用户,远程管理在服务器上的电子邮件,定义在RFC1939,为POP协议的第三版)以及IMAP等。Spring提供了JavaMailSender接口实现邮件发送功能,在SpringBoot的Starter模块中已为此提供了自动化配置。2.引入依赖新建一个SpringBoot工程原创 2020-07-10 13:51:46 · 891 阅读 · 0 评论 -
19.集成定时器Quartz
1.Quartz简介Quartz是一款由Java编写的开源任务调度框架,通过触发器设置作业定时运行规则,控制作业的运行时间。Quartz框架主要核心组件包括调度器、触发器、作业,调度器作为作业的总指挥,触发器作为作业的操作者,作业作为用于应用的功能模块。2.引入依赖新建一个SpringBoot工程,并在pom.xml文件中添加集成Quartz所需要的dependency。<dependency> <groupId>org.quartz-scheduler</group原创 2020-07-10 13:51:36 · 185 阅读 · 0 评论 -
18.重试机制
1.重试机制简介Spring-Retry是一个开源工具包,其将重试操作定制化,可设置重试策略并保证线程安全。2.引入依赖复制一份“集成MyBatis”项目代码,修改项目名称为retry,然后在pom.xml文件中添加集成Retry所需要的dependency。<dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactI原创 2020-07-10 13:51:25 · 629 阅读 · 0 评论 -
17.集成监听器Listener
1.Listener简介Listener是监听器的英文名称,是Servlet的监听器,可用于监听Web应用中某些对象或信息的创建、销毁、增加、修改和删除等动作,然后作出相应的处理。当范围对象的状态发生变化时,服务器自动调用监听器对象中的方法。监听器常用于统计在线人数和在线用户、信息初始化和统计网站的访问量等等。根据监听对象,可把监听器分为三类:ServletContext(Application)、HttpSession(Session)和ServletRequest(Request)。Applicat原创 2020-07-10 13:51:15 · 199 阅读 · 0 评论 -
16.集成过滤器Filter
1.Filter简介Filter是过滤器的英文名称,它是处于客户端和服务器资源文件之间的一道过滤网。通过Filter可实现URL级别的权限访问控制、敏感词汇过滤以及响应信息压缩等一些高级功能。2.全局访问过滤器开发复制一份“集成MyBatis”的项目代码,修改项目名称为filter。然后在项目目录“/src/main/java/com/leichuangkj/filter”下新建filter目录,并在filter目录下新建RequestFilter类,具体代码如下。@WebFilter(filter原创 2020-07-10 13:51:04 · 296 阅读 · 0 评论 -
15.集成前端模板Thymeleaf
1.Thymeleaf简介Thymeleaf是一款优秀的面向Java的XML/XHTML/HTML5页面模板,其具有丰富的标签和函数。关于Thymeleaf表达式、标签和函数等内容,请读者自行到官方网站参考学习,这里不再赘述。2.引入依赖新建一个SpringBoot工程,并在pom.xml文件中添加集成Thymeleaf所需要的dependency。<dependency><groupId>mysql</groupId> <artifactId>m原创 2020-07-10 13:50:53 · 221 阅读 · 0 评论 -
14.全局异常处理
1.全局异常简介Web应用请求处理过程中时常会发生异常,当发生异常时,需要通过一个统一的异常处理来保证客户端能够收到友好的提示。2.全局异常类开发复制一份“集成MyBatis”的项目代码,修改项目名称为globalexception。然后在项目目录“/src/main/java/com/leichuangkj/globalexception/common”下新建GlobalExceptionHandler类,具体代码如下。@ControllerAdvicepublic class GlobalEx原创 2020-07-10 13:50:42 · 259 阅读 · 0 评论 -
13.集成日志组件Logback
1.Logback简介Logback是由log4j创始人设计的另一款开源日志组件,主要包括以下几个模块。logback-core:logback-classic和logback-access的基础模块。logback-classic:log4j的改良版本,完整实现了slf4j的API,可以方便地进行日志系统更换,如log4j。logback-access:与Servlet容器集成的访问模块,提供通过HTTP来访问日志的功能。2.引入依赖新建一个SpringBoot工程,并在pom.xml文件中添原创 2020-07-10 13:50:28 · 215 阅读 · 0 评论 -
12.集成数据库监控组件Druid
1.Druid简介Druid是阿里巴巴一款开源的数据库连接池项目。其在监控、可扩展、稳定性和性能方面具有明显的优势。通过其提供的监控功能,可以实现观察数据库连接池和SQL查询的工作情况。Druid是一个JDBC组件,主要包括以下三个部分。DruidDriver:代理Driver,能够提供基于Filter-Chain模式的插件体系。DruidDataSource:高效可管理的数据库连接池。SQLParser:支持所有JDBC兼容的数据库,包括Oracle、MySQL和SQL Server等。2.引入原创 2020-07-10 13:50:16 · 340 阅读 · 0 评论 -
11.集成数据库H2
1.H2简介H2是一个开源的、内存型嵌入式数据库引擎,它是一个用Java开发的类库,可直接嵌入到应用程序中,与程序一起打包发布出去,不受平台的限制。2.引入依赖新建一个SpringBoot工程,并在pom.xml文件中添加集成H2所需要的dependency。<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId></depe原创 2020-07-10 13:49:53 · 459 阅读 · 0 评论 -
10.异步调用
1.异步调用简介异步调用是相对于同步调用而言的,同步调用是指程序按预定顺序一步一步执行,每一步必须等到上一步执行完成之后才能执行,而异步调用则无需等待上一步程序执行完成即可执行。在日常开发的项目中,当访问的接口较慢或者做耗时任务时,避免程序一直卡在耗时任务上,使程序能够并行执行,可以使用多线程来并行处理,也可以使用SpringBoot提供的异步处理方式@Async来处理。2.引入依赖新建一个SpringBoot工程,并在pom.xml文件中添加需要的dependency。<dependency原创 2020-07-04 15:35:01 · 4175 阅读 · 0 评论 -
9.集成消息中间件ActiveMQ
1.ActiveMQ简介MQ全称为(Message Queue),是一个消息的接收和转发容器,用于消息推送。ActiveMQ是Apache提供的一个开源的消息系统,完全采用Java来实现,很好地支持了J2EE提出的JMS(Java Message Service)规范。2.数据准备新建一个名为mydb的数据库,在mydb中新建一个名为mood的数据表,具体SQL语句如下。create database if not exists mydb character set = utf8;create原创 2020-07-04 15:20:57 · 383 阅读 · 0 评论 -
8.集成缓存数据库Redis
1.Redis简介Redis是一个基于内存的、单线程、高性能的key-value型数据库,读写性能优异。Redis支持丰富的数据类型,包括string(字符串)、list(链表)、set(集合)、zset(有序集合)和hash(哈希类型)。在SpringBoot中提供了强大的基于注解的缓存支持,可以通过注解配置的方式,低侵入地给原有Spring应用增加缓存功能,提高数据访问性能。2.引入依赖复制一份“集成MyBatis”的项目代码,修改项目名称为redis,并在pom.xml文件中添加集成Redis原创 2020-07-04 15:18:13 · 291 阅读 · 0 评论 -
7.集成Spring Data JPA
1.Spring Data JPA简介JPA是Sun公司官方提出的Java持久层规范。所谓规范,是指只定义标准规则,不提供实现,而JPA的主要实现有Hibernate、EclipseLink以及OpenJPA等。Spring Data JPA是Spring Data的一个子项目,它通过基于JPA的Repository,极大地减少了JPA作为数据访问方案的代码量。通过Spring Data JPA框架,开发者可以省略实现持久层业务逻辑的工作,只需要声明持久层接口,其它的交给Spring Data JPA来原创 2020-07-04 15:17:32 · 154 阅读 · 0 评论 -
6.事务支持
1.SpringBoot事务简介SpringBoot通过@Transactional注解开启事务,在SpringBoot中默认对JPA、JDBC、MyBatis开启了事务,引入对应的依赖时,事务就默认开启。如果需要集成其它ORM框架时,比如BeatSql,需要自行配置相关的事务管理器。SpringBoot使用TransactionAutoConfiguration类来配置事务,此配置类依赖于JtaAutoConfiguration和DataSourceTransactionManagerAutoConf原创 2020-07-04 15:17:01 · 467 阅读 · 0 评论 -
5.集成持久层框架MyBatis
1.MyBatis简介MyBatis是一款优秀的数据持久层框架,它支持定制化SQL、存储过程以及高级映射。其避免了JDBC一系列繁杂的操作过程,改用简单的XML或注解来配置和映射原生信息,将接口和Java的POJO类映射成数据库中的记录。2.引入依赖新建一个SpringBoot工程,并在pom.xml文件中添加集成MyBatis所需要的dependency。<dependency> <groupId>mysql</groupId> <artifactId原创 2020-07-04 15:16:16 · 215 阅读 · 0 评论 -
4.集成数据库MySQL
1.数据准备新建一个名为mydb的数据库,在mydb中新建一个名为user的数据表,然后往数据表里插入3条数据,具体SQL语句如下。create database if not exists mydb character set = utf8;create table user ( id int(11) not null auto_increment, name varchar(30) default null, email varchar(50) default null, pri原创 2020-07-04 15:15:28 · 593 阅读 · 0 评论 -
3.自定义属性与加载
1.项目准备新建一个SpringBoot工程,并在pom.xml文件中添加所需要的dependency。<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.2</version> <scope>provided</scope></depende原创 2020-07-04 15:14:56 · 211 阅读 · 0 评论 -
2.IDEA插件的安装和使用
1.Free Mybatis plugin简介:Free Mybatis plugin插件可以让开发者在dao层的mapper接口和XML文件中方便地来回切换。安装步骤:在Intellij IDEA界面中,单击【Intellij IDEA】->【Preferences…】->【Plugins】,在弹出的窗口中找到搜索框,输入Mybatis,然后点击【Browse repositories… 】选项,在弹出的窗口中找到Free Mybatis plugin,单击【Install】安装。安装成功原创 2020-07-04 15:14:10 · 370 阅读 · 0 评论 -
1.第一个SpringBoot项目
1.SpringBoot简介SpringBoot是目前流行的微服务框架,倡导“约定优先于配置”,其设计目的是用来简化新Spring应用的初始化搭建以及开发过程。SpringBoot提供了诸多核心功能,如自动化配置、starter简化Maven配置、内嵌Servlet容器以及应用监控等,让开发者可以快速构建企业级应用程序。2.开发环境准备开始学习SpringBoot之前,开发者需要准备好开发环境,包括JDK、Intellij IDEA、Maven、Mysql、Redis、Kafka、Zookeeper、原创 2020-07-04 15:13:09 · 528 阅读 · 0 评论 -
从头开始学SpringBoot
1.第一个SpringBoot项目2.IDEA插件的安装和使用3.自定义属性与加载4.集成数据库MySQL5.集成持久层框架MyBatis6.事务支持7.集成Spring Data JPA8.集成缓存数据库Redis9.集成消息中间件ActiveMQ10.异步调用11.集成数据库H212.集成数据库监控组件Druid13.集成日志组件Logback14.全局异常处理15.集成前端模板Thymeleaf16.集成过滤器Filter17.集成监听器Listener18.重试机制原创 2020-07-04 12:42:01 · 238 阅读 · 0 评论