第一章 Spring Boot 介绍
1.1概述
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。Spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式。
我仅仅只需要非常少的几个配置就可以迅速方便的搭建起来一套Web项目或者是构建一个微服务!
== 不会Spring可以直接学Spring Boot吗?==
如果把“直接学”理解成从Spring Boot学起,然后再学“spring其他”,这样肯定没问题。
如果把“直接学”理解成只学Spring Boot,“spring其他”都不学,这样肯定不行
1.2为什么使用Spring Boot
J2EE笨重的开发、繁多的配置、低下的开发效率、复杂的部署流程、第三方技术集成难度大。
1.3Spring Boot是什么
一站式整合所有应用框架的框架;并且完美整合Spring技术栈;
链接: https://spring.io/projects.
Spring Boot来简化Spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的,产品级别的应用
1.4Spring boot 优点
- 快速创建独立运行的Spring项目以及与主流框架集成
- 使用嵌入式的Servlet容器,应用无需打成WAR包
- starters自动依赖与版本控制
- 大量的自动配置,简化开发,也可修改默认值
- 无需配置XML,无代码生成,开箱即用
- 准生产环境的运行时应用监控
- 与云计算的天然集成
1.5 环境要求
链接: link.
第二章 快速创建SpringBoot应用
2.1 创建Spring Boot应用
第一步、依次展开File->New→Project,创建一个Spring Boot项目。
第二步、选择“Spring Initializr”,点击“Next”,下一步。
第三步、输入Maven坐标,点击下一步。
第四步、点击“Next”下一步。
第五步、这里是定义工程名字和工程存放路径。一般默认即可,点击“下一步”。
第六步、这里是提示工程是否在当前窗口打开还是另外打开一个窗口。选择在当前窗口打开,这里不影响步骤的执行。
第七步、这里的进度条表示正在下载Spring Boot包相关的依赖。下载完后工程既可以运行了。
第八步、打开src\main\java\net.suncaper.bootexample\BootExampleApplication。右键点击编辑器区域,选择运行。
第九步、当出现下面的提示信息时,代表Spring Boot已可用了。
Spring Boot 目录结构
- |.idea: idea项目目录,这里主要存放Intellij Idea的项目配置文件,不能删除。
- |~~ .mvn: 可以删除 ~~
- |src/main/java: 程序开发以及主程序入口
- |src/main/resources: 配置文件
- |src/test/java 测试程序
- |.gitignore git的ignore文件
- |boot-example.iml Intellij Idea项目配置文件
- |~~ HELP.md 帮助文档,可以删除 ~~
- |
mvnw 可以删除 - |
mvnw.cmd 可以删除 - |pom.xml Maven的pom文件
删除掉上面的文件,目录结构如下:
2.2创建Web程序
pom.xml 如下
<?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 https://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.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>net.suncaper</groupId>
<artifactId>boot-example</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>boot-example</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</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>
在开始之前,我们先来看看上一步创建的pom.xml如上所示,主要有四个部分:
- 项目元数据:创建时候输入的Project Metadata部分,也就是Maven项目的基本元素,包括:groupId、artifactId、version、name、description等
- parent:继承spring-boot-starter-parent的依赖管理,控制版本与打包等内容
- dependencies:项目具体依赖,这里包含了spring-boot-starter,spring的基本模块;spring-boot-starter-test用于编写单元测试的依赖包。更多功能模块的使用我们将在后面的教程中逐步展开。
- build:构建配置部分。默认使用了spring-boot-maven-plugin,配合spring-boot-starter-parent就可以把Spring Boot应用打包成JAR来直接运行。
如果要进行Web的开发,需要在dependencies中引入Web开发的模块spring-boot-starter-web:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
spring-boot-starter-web模块包含spring-boot-starter,因此我们在dependencies移除它,最终的依赖如下:
<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>
2.3 第一个HTTP接口
第一步、展开src\main\java\net.suncaper.bootexample包,右键点击包名,依次选择 New→Java Class,新建一个类。
第二步、输入类的名字“HelloController”,点击“Ok”
第三步、更改类的内容如下(之后会详细解释):
package net.suncaper.bootexample;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author nedli
*/
@RestController
public class HelloController {
@RequestMapping("/hello")
public String index() {
return "Hello World";
}
}
第四步、启动主程序,点击右上角的绿色按钮:
或者打开BootExampleApplication,右键点击编辑器
第五步、启动程序,如果有以下日志,启动成功。
第六步、打开浏览器,访问“http://localhost:8080/hello”, 出现"hello world"字样。
第三章 观察Application
新建Spring Boot项目后,项目会默认生成一个XXXXApplication.java文件:
打开Application.java文件,我们首先看到的是**@SpringBootApplication注解。这个注解其实包含了@Configuration、@EnableAutoConfiguration和@ComponentScan**等注解,提供了java配置、自动配置、组件扫描等功能。
main方法
该main方法,这是一个标准的方法,它遵循Java对于一个应用程序入口点的约定。main方法通过调用run,将业务委托给了Spring Boot的SpringApplication类。SpringApplication将引导我们的应用。
public static void main(String[] args) {
SpringApplication.run(BootExampleApplication.class, args);
}
第四章 SpringBoot - yml配置文件
SpringBoot使用一个全局的配置文件,配置文件名是固定的(application.yml):
YAML是JSON的一个超集,是一种方便的定义层次配置数据的格式,结构层次上清晰明了,配置简单易读、易用。以下是YAML的一个例子,在目录src/main/java/resources中新建一个文件application.yml,然后删除掉application.properties:
目录结构为
然后在application.yml中添加如下内容(使用Idea自动缩进,多一个少一个空格都不行):
server:
display:
name: app
address: localhost
里面有两条属性。
- server.display.name的值是app
- server.address的值是localhost
然后我们在项目里面使用这两个值。
@RestController
public class HelloController {
@Value("${server.display.name}")
private String serverName;
@Value("${server.address}")
private String serverIp;
@RequestMapping("/hello")
public String index() {
return "Server Name is:" + serverName + ", server ip is:" + serverIp;
}
}
在HelloController里面定义了两个变量serverName和serverIp。然后通过**@Value("${YAML属性}")**读取YAML中配置的属性。
启动服务,然后打开网址 http://localhost:8080/hello
YAML(/ˈjæməl/)是一个可读性高,用来表达数据序列化的格式。
YAML是"YAML Ain’t a Markup Language"(YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。
server:
port: 8081
4.1 YAML语法
4.1.1 YAML基本语法
- 使用缩进表示层级关系
- 缩进时不允许使用Tab键,只允许使用空格。
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
- 大小写敏感
4.1.2 YAML 支持的三种数据结构
- 对象:键值对的集合
- 数组:一组按次序排列的值
- 字面量:单个的、不可再分的值
4.2 值的写法
4.2.1 字面量:普通的值(数字,字符串,布尔)
- k: v:字面直接来写;
- 字符串默认不用加上单引号或者双引号;
- “”:双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
- name: “zhangsan \n lisi”:输出;zhangsan 换行 lisi
- ‘’:单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
- name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi
对象、Map(属性和值)(键值对):
- k: v:在下一行来写对象的属性和值的关系;注意缩进
- 对象还是k: v的方式
friends:
lastName: zhangsan
age: 20
4.2.3 数组(List、Set)
用- 值表示数组中的一个元素
pets:
‐ cat
‐ dog
‐ pig
行内写法:
pets: [cat,dog,pig]
第五章 更改监听端口
默认Spring Boot启动是监听在8080上的。
如果8080被使用,就会报以下错误。
这个时候可以更换一个新的端口。
server:
port: 8180
然后再启动,启动成功并且绑定到端口8180。