Springboot⼊门到精通(超详细⽂档)
1. Spring Boot是什么
我们知道,从 2002 年开始,Spring ⼀直在飞速的发展,如今已经成为了在Java EE(Java Enterprise Edition)开发中真正意义上的标准,但是随着技术的发展,Java EE使⽤ Spring 逐渐变得笨重起来,⼤量的 XML ⽂件存在于项⽬之中。繁琐的配置,整合第三⽅框架的配置问题,导致了开发和部署效率的降低。
2012 年 10 ⽉,Mike Youngstrom 在 Spring jira 中创建了⼀个功能请求,要求在 Spring 框架中⽀持⽆容器 Web 应⽤程序体系结构。他谈到了在主容器引导 spring 容器内配置 Web 容器服务。这是 jira 请求的摘录:
我认为 Spring 的 Web 应⽤体系结构可以⼤⼤简化,如果它提供了从上到下利⽤ Spring 组件和配置模型的⼯具和参考体系结构。在简单的 main()⽅法引导的 Spring 容器内嵌⼊和统⼀这些常⽤Web 容器服务的配置。
这⼀要求促使了 2013 年初开始的 Spring Boot 项⽬的研发,到今天,Spring Boot 的版本已经到了 2.0.3 RELEASE。Spring Boot 并不是⽤来替代 Spring 的解决⽅案,⽽是和 Spring 框架紧密结合⽤于提升 Spring 开发者体验的⼯具。
它集成了⼤量常⽤的第三⽅库配置,Spring Boot应⽤中这些第三⽅库⼏乎可以是零配置的开箱即⽤(out-of-the-box),⼤部分的Spring Boot 应⽤都只需要⾮常少量的配置代码(基于 Java 的配置),开发者能够更加专注于业务逻辑。
2. 为什么学习Spring Boot
2.1 从Spring官⽅来看
我们打开 Spring 的,可以看到下图:
我们可以看到图中官⽅对 Spring Boot 的定位:Build Anything, Build任何东西。Spring Boot旨在尽可能快地启动和运⾏,并且只需最少的 Spring 前期配置。 同时我们也来看⼀下官⽅对后⾯两个的定位:
SpringCloud:Coordinate Anything,协调任何事情;
SpringCloud Data Flow:Connect everything,连接任何东西。
仔细品味⼀下,Spring 官⽹对 Spring Boot、SpringCloud 和 SpringCloud Data Flow三者定位的措辞⾮常有味道,同时也可以看
出,Spring 官⽅对这三个技术⾮常重视,是现在以及今后学习的重点(SpringCloud 相关达⼈课课程届时也会上线)。
2.2 从Spring Boot的优点来看
Spring Boot 有哪些优点?主要给我们解决了哪些问题呢?我们以下图来说明:
2.2.1 良好的基因
Spring Boot 是伴随着 Spring 4.0 诞⽣的,从字⾯理解,Boot是引导的意思,因此 Spring Boot 旨在帮助开发者快速搭建 Spring 框架。Spring Boot 继承了原有 Spring 框架的优秀基因,使 Spring 在使⽤中更加⽅便快捷。
2.2.2 简化编码
举个例⼦,⽐如我们要创建⼀个 web 项⽬,使⽤ Spring 的朋友都知道,在使⽤ Spring 的时候,需要在 pom ⽂件中添加多个依赖,⽽Spring Boot 则会帮助开发着快速启动⼀个 web 容器,在 Spring Boot 中,我们只需要在 pom ⽂件中添加如下⼀个 starter-web 依赖即可。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
我们点击进⼊该依赖后可以看到,Spring Boot 这个 starter-web 已经包含了多个依赖,包括之前在 Spring ⼯程中需要导⼊的依赖,我们看⼀下其中的⼀部分,如下:
<!-- .....省略其他依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.7.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.7.RELEASE</version>
<scope>compile</scope>
</dependency>
由此可以看出,Spring Boot ⼤⼤简化了我们的编码,我们不⽤⼀个个导⼊依赖,直接⼀个依赖即可。
springboot aop
2.2.3 简化配置
Spring 虽然使Java EE轻量级框架,但由于其繁琐的配置,⼀度被⼈认为是“配置地狱”。各种XML、Annotation配置会让⼈眼花缭乱,⽽且配置多的话,如果出错了也很难出原因。Spring Boot更多的是采⽤ Java Config 的⽅式,对 Spring 进⾏配置。举个例⼦:
我新建⼀个类,但是我不⽤ @Service注解,也就是说,它是个普通的类,那么我们如何使它也成为⼀个 Bean 让 Spring 去管理呢?只需要@Configuration 和@Bean两个注解即可,如下:
public class TestService {
public String sayHello () {
return "Hello Spring Boot!";
}
}
import t.annotation.Bean;
import t.annotation.Configuration;
@Configuration
public class JavaConfig {
@Bean
public TestService getTestService() {
return new TestService();
}
}
@Configuration表⽰该类是个配置类,@Bean表⽰该⽅法返回⼀个 Bean。这样就把TestService作为 Bean 让 Spring 去管理了,在其他地⽅,我们如果需要使⽤该 Bean,和原来⼀样,直接使⽤@Resource注解注⼊进来即可使⽤,⾮常⽅便。
@Resource
private TestService testService;
另外,部署配置⽅⾯,原来 Spring 有多个 xml 和 properties配置,在 Spring Boot 中只需要个 l即可。
2.2.4 简化部署
在使⽤ Spring 时,项⽬部署时需要我们在服务器上部署 tomcat,然后把项⽬打成 war 包扔到 tomcat⾥,在使⽤ Spring Boot 后,我们不需要在服务器上去部署 tomcat,因为 Spring Boot 内嵌了 tomcat,我们只需要将项⽬打成 jar 包,使⽤ java -jar xxx.jar⼀键式启动项⽬。
另外,也降低对运⾏环境的基本要求,环境变量中有JDK即可。
2.2.5 简化监控
我们可以引⼊ spring-boot-start-actuator 依赖,直接使⽤ REST ⽅式来获取进程的运⾏期性能参数,从⽽达到监控的⽬的,⽐较⽅便。但是 Spring Boot 只是个微框架,没有提供相应的服务发现与注册的配套功能,没有外围监控集成⽅案,没有外围安全管理⽅案,所以在微服务架构中,还需要 Spring Cloud 来配合⼀起使⽤。
2.3 从未来发展的趋势来看
微服务是未来发展的趋势,项⽬会从传统架构慢慢转向微服务架构,因为微服务可以使不同的团队专注于更⼩范围的⼯作职责、使⽤独⽴的技术、更安全更频繁地部署。⽽ 继承了 Spring 的优良特性,与 Spring ⼀脉相承,⽽且 ⽀持各种REST API 的实现⽅式。Spring Boot 也是官⽅⼤⼒推荐的技术,可以看出,Spring Boot 是未来发展的⼀个⼤趋势。
3. 本课程能学到什么
本课程使⽤⽬前 Spring Boot 最新版本2.0.3 RELEASE,课程⽂章均为作者在实际项⽬中剥离出来的场景和demo,⽬标是带领学习者快速上⼿ Spring Boot,将 Spring Boot 相关技术点快速运⽤在微服务项⽬中。全篇分为两部分:基础篇和进阶篇。
基础篇(01—10课)主要介绍 Spring Boot 在项⽬中最常使⽤的⼀些功能点,旨在带领学习者快速掌握 Spring Boot 在开发时需要的知识点,能够把 Spring Boot 相关技术运⽤到实际项⽬架构中去。该部分以 Spring Boot 框架为主线,内容包括Json数据封装、⽇志记录、属性配置、MVC⽀持、在线⽂档、模板引擎、异常处理、AOP 处理、持久层集成等等。
进阶篇(11—17课)主要是介绍 Spring Boot 在项⽬中拔⾼⼀些的技术点,包括集成的⼀些组件,旨
在带领学习者在项⽬中遇到具体的场景时能够快速集成,完成对应的功能。该部分以 Spring Boot 框架为主线,内容包括、、缓存、安全认证、分词插件、消息队列等等。
认真读完该系列⽂章之后,学习者会快速了解并掌握 Spring Boot 在项⽬中最常⽤的技术点,作者课程的最后,会基于课程内容搭建⼀个Spring Boot 项⽬的空架构,该架构也是从实际项⽬中剥离出来,学习者可以运⽤该架构于实际项⽬中,具备使⽤ Spring Boot 进⾏实际项⽬开发的能⼒。
课程所有源码提供免费下载:。
5. 本课程开发环境和插件
本课程的开发环境:
开发⼯具:IDEA 2017
JDK版本: JDK 1.8
Spring Boot版本:2.0.3 RELEASE
Maven版本:3.5.2
涉及到的插件:
FastJson
Swagger2
Thymeleaf
MyBatis
Redis
ActiveMQ
Shiro
Lucence
第01课:Spring Boot开发环境搭建和项⽬启动
上⼀节对 SpringBoot 的特性做了⼀个介绍,本节主要对 jdk 的配置、Spring Boot⼯程的构建和项⽬的启动、Spring Boot 项⽬⼯程的结构做⼀下讲解和分析。
1. jdk 的配置
本课程是使⽤ IDEA 进⾏开发,在IDEA 中配置 jdk 的⽅式很简单,打开File->Project Structure,如下图所:
1. 选择 SDKs
2. 在 JDK home path 中选择本地 jdk 的安装⽬录
3. 在 Name 中为 jdk ⾃定义名字
通过以上三步骤,即可导⼊本地安装的 jdk。如果是使⽤ STS 或者 eclipse 的朋友,可以通过两步骤添加:
window->preference->java->Instralled JRES来添加本地 jdk。
window-->preference-->java-->Compiler选择 jre,和 jdk 保持⼀致。
2. Spring Boot ⼯程的构建
2.1 IDEA 快速构建
IDEA 中可以通过File->New->Project来快速构建 Spring Boot ⼯程。如下,选择 Spring Initializr,在 Project SDK 中选择刚刚我们导⼊的 jdk,点击 Next,到了项⽬的配置信息。
Group:填企业域名,本课程使⽤com.itcodai
Artifact:填项⽬名称,本课程中每⼀课的⼯程名以course+课号命令,这⾥使⽤ course01
Dependencies:可以添加我们项⽬中所需要的依赖信息,根据实际情况来添加,本课程只需要选择 Web 即可。
2.2 官⽅构建
第⼆种⽅式可以通过官⽅构建,步骤如下:
访问 start.spring.io/。
在页⾯上输⼊相应的 Spring Boot 版本、Group 和 Artifact 信息以及项⽬依赖,然后创建项⽬。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。