一、Spring Boot介绍
1.1、什么是Spring Boot
Spring Boot是由Pivotal团队提供的全新框架,其中“Boot”的意思就是“引导”。Spring Boot是Spring+Spring MVC,不是对Spring的增强,而是可以快速开发Spring的应用框架。
1.2、Spring Boot的特点
- 内嵌tomcat,无需部署war文件
- 简化Maven配置,无需引入过多pom依赖,提供一系列启动器简化Maven配置
- 零xml配置,Spring Boot提供了大量自动配置类
二、构建Spring Boot项目
2.1、下载SpringBoot项目
2、选择构建工具Maven Project、Spring Boot版本以及一些工程基本信息,点击“GENERETE”下载项目压缩包
参考下图所示:
2.2、通过Maven构建SpringBoot项目
首先建一个空项目,在项目下创建新模块
配置pom,继承SpringBoot父工程
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.4</version>
<relativePath/>
</parent>
添加启动器
<!--添加Springboot的web启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
创建启动类
创建启动类,用于启动SpringBoot项目
package com.by;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication//扫描类下所有的包
public static void main(String[] args) {
SpringApplication.run(App.class,args);
}
}
Controller
package com.by.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.HashMap;
import java.util.Map;
@Controller
public class HelloController {
@RequestMapping("/hello")
@ResponseBody
public Map hello(){
HashMap<String, Object> map = new HashMap<>();
map.put("msg","hello");
return map;
}
}
2.3、Spring Boot的Starter
2.3.1、使用Spring框架的问题
-
依赖导入问题:每个项目都需要来单独维护自己所依赖的jar包,手动导入依赖容易出错,且无法统一集中管理。
-
配置繁琐:在引入依赖之后需要做繁杂的配置,例如web.xml配置数据库连接池配置、事务配置等等。这些配置重复且繁杂,在不同的项目中需要进行多次重复开发,这在很大程度上降低了开发效率。
而在SpringBoot的starter(启动器)它为我们提供了一个强大的功能可以解决上述问题。
2.3.2、Starter是什么
Spring Boot通过将我们常用的功能场景抽取出来,做成一系列的启动器,我们只需要在项目中引入这些starter,相关的所有依赖就会全部被导入进来,同时可以减去繁杂的配置,例如:
- spring-boot-starter-web:支持全栈式web开发,包括tomcat和SpringMVC等jar包
- spring-boot-starter-jpa:支持spring以jpa方式操作数据库的jar包的集合
- spring-boot-starter-redis:支持redis键值存储的数据库操作
在导入的starter之后,SpringBoot会帮我们完成相关依赖的自动导入、相关环境的自动配置。
2.3.3、Starter的命名规范
-
官方启动器命名:
-
前缀:spring-boot-starter-
-
规范:spring-boot-starter-模块名
-
举例:spring-boot-starter-web、spring-boot-starter-jdbc
-
-
第三方启动器命名:
-
后缀:-spring-boot-starter
-
规范:模块名-spring-boot-starter
-
举例:mybatis-spring-boot-starter
-
2.4、启动类存放位置
启动类存放的位置:
-
controller 同一个包下
-
controller 的上一级包中
三、Spring Boot的全局配置文件
SpringBoot项目使用一个全局的配置文件application.properties或者是application.yml,在resources目录下或者类路径下的/config下,一般我们放到resources下
3.1、properties配置文件
3.1.1、修改tomcat的端口为1234
server.port=1234
3.1.2、修改访问项目的名字
server.servlet.context-path=/springboot
3.2、yml配置文件
yml是 Spring Boot 中新增的一种配置文件格式。特点:具备天然的树状结构.
3.2.1、yml方式配置springboot
server:
port: 1234
servlet:
context-path: /springboot_helloWorld
3.3、yml与properties的区别
- 配置文件的拓展名有变化
- 配置文件中的语法有变化:
1、在yml中使用“:”进行分割
2、在yml中缩进时不允许使用tab键,缩进的空格数不重要,只要是左对齐的一列数据,都是同一个层级
3、 每个key的冒号后面一定要加一个空格
四、Spring Boot项目的两种发布方式
4.1、通过jar包发布
在pom.xml中添加一个Spring Boot的构建插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<!--自动检测项目中的 main 函数-->
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
在maven视图中,选择“package”,在target中会产生xxx.jar包
然后在cmd终端发布项目
java -jar xxx.jar
4.2、通过war包发布
在pom中添加war打包
<packaging>war</packaging>
设置tomcat启动器依赖范围
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!--tomcat启动器依赖范围-->
<scope>provided</scope>
</dependency>
修改启动类
package com.by;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.web.SpringServletContainerInitializer;
@SpringBootApplication//扫描类下所有的包
public class App{
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(App.class);
}
public static void main(String[] args) {
SpringApplication.run(App.class,args);
}
}