文章目录
一.SpringBoot 简介
SpringBoot是伴随着Spring4.x的推出同时推出的一个框架.
框架的核心思想就是简化应用程序or网站的开发,提高开发效率
而SpringBoot将这一理念做到了极致,提出了约定大于配置的概念
随着近几年微服务,云技术的流行,SpringBoot更是成为企业级开发的必备利器
以下是来自百度百科的介绍
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
记住:虽然SpringBoot很牛很强大,但是它并不是一项新的技术,它只是整合了Spring全家桶
在我写这篇教案的时候,最新的SpringBoot版本是2.1.7
二.SpringBoot优缺点
1. 优点
- 快速创建独立运行的Spring项目以及与主流框架集成
- 使用嵌入式Servlet容器,应用无需打war包,以jar的形式独立运行(如果想打成war包也可以)
- starters启动器,提供自动依赖与版本控制
- 大量的自动配置,简化开发,也可以自己配置
- no xml,开箱即用(pom.xml)
- 准生产环境的运行时监控
- 与云计算的天然集成(受益于Spring全家桶的无缝整合)
2. 缺点
- 入门容易精通难,受制于之前对于Spring全家桶其余产品的熟悉程度,不建议新手直接学习
三.SpringBoot时代背景
1.微服务
敏捷开发创始人[martin fowler]([https://baike.baidu.com/item/martin%20fowler/9005728?fr=aladdin](https://baike.baidu.com/item/martin fowler/9005728?fr=aladdin))
什么是敏捷开发?
传统的软件开发,开发者得先研究清楚用户所有的需求,再开发出一套完整的方案。这不仅使得开发周期长,而且整套方案中决不允许有任何纰漏,否则用户的需求就无法满足,而对开发者来说,更改也非常困难。而敏捷开发则是从用户核心需求入手,在短时间内拿出一个原型,然后根据用户的其他需求增加模块,同时修改和完善,属于“可以让汽车一边跑,一边换轮子”的开发方式,非常适合对开发周期要求越来越短的商业软件开发。
实现敏捷开发的核心就是服务(也称业务)的拆分,将业务拆分为一个个小的模块,互相之间用HTTP的方式通信,就是我们所说的微服务架构
SpringBoot既可以开发AIO(All In One)的应用,Spring家族的出身也给予了SpringBoot"微"化和上云的能力
四.学习SpringBoot大前提
- 拥有Spring框架的使用经验(必备)
- 熟练使用Maven的项目构建和依赖管理
- 熟练使用STS(Spring基于Eclipse的改版或IDEA)
五.本次课程环境约束
- java version “1.8.0_191”(SpringBoot 推荐1.7以上)
- Spring 4.x(必须是4.0以后)
- SpringBoot 2.1.6.RELEASE
- IntelliJ IDEA 2018.3.1 x64
- mysql 5.5
- Maven 3.3.9
六.开发前的准备
1. 下载,安装,破解IDEA(略)
2. 配置IDEA的Maven仓库
-
打开IDEA
-
同时按住Ctrl+Alt+S,唤醒IDEA设置界面
-
在搜索框内搜索maven(或者在build>build tools中找到maven设置)
-
选中maven版本为最后一项(本地仓库)
-
打开maven仓库地址,找到settings.xml(我的路径为:D:/Program Files/JetBrains/IntelliJ IDEA 2018.3.1/plugins/maven/lib/maven3)
-
打开settings.xml后,找到mirror,添加阿里云镜像服务器(防止被墙)
- 保存后配置完成
七.Hello World
浏览器访问网站根路径,服务器返回Hello World字符串
1.使用Spring Initializer快速创建SpringBoot项目
注意:一定要联网操作
- 打开IDEA或者STS
- 点击创建项目
- 输入包名:com.scj
- 输入组织ID:hello
- 下一步
- 选择web模块(可见SpringCloud的依赖很多,占了半数,可惜用不上)
- 下一步
- 点击完成IDEA会自动从官网下载目录结构和依赖
2. 删除多余的文件,保留目录结构如图
3. 自动生成的pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.scj</groupId>
<artifactId>hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>hello</name>
<description>Hello World</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
除了必要的依赖以外,SpringBoot还贴心的为我们自动加了单元测试(因为世界上没有没有bug的代码)
4. 开发业务功能
在创建项目后,我们就可以直接开发业务功能而不用关心复杂繁琐的配置
-
找到src>main>java>com.scj.hello
-
右键新建一个Controller
-
按照这样命名,IDEA会自动帮我们创建controller包
-
编写BaseController代码
package com.scj.hello.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; /** * @ClassName BaseController * @Description 基础控制器 * @Author QinLing * @Date 2019/8/9 0009 15:46 * @Version 1.0 **/ @Controller public class BaseController { @ResponseBody @RequestMapping("/") public String hello(){ return "Hello SpringBoot"; } }
- 点击运行
-
控制台输出信息没有报错且显示端口号说明运行成功
-
打开浏览器输入localhost:8080
-
得到结果
5. 简化我们的代码(组合注解)
在某些时候,我们可能一个Controller里全是@ResponseBody返回而非返回页面(例如开发API或者APP),这时候可以在整个类上加上@ResponseBody注解,形如
@ResponseBody
@Controller
public class BaseController {
@RequestMapping("/")
public String hello(){
return "Hello SpringBoot";
}
}
我们将以上这样的注解叫做RestAPI,
类上的两个注解@ResponseBody,@Controller
可以组合为@RestController
以上博文是我在培训的时候整理的教案,码字不易,转载请注明出处,联系邮箱huanqwer0314@gmail.com