SpringBoot快速入门
SpringBoot 是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。
大家已经感受了 SpringBoot 程序,回过头看看 SpringBoot 主要作用是什么,就是简化 Spring 的搭建过程和开发过 程。
原始 Spring 环境搭建和开发存在以下问题:
-
配置繁琐
-
依赖设置繁琐
SpringBoot 程序优点恰巧就是针对 Spring 的缺点
-
自动配置。这个是用来解决 Spring 程序配置繁琐的问题
-
起步依赖。这个是用来解决 Spring 程序依赖设置繁琐的问题
-
辅助功能(内置服务器,…)。我们在启动 SpringBoot 程序时既没有使用本地的 tomcat 也没有使用 tomcat 插件,而 是使用 SpringBoot 内置的服务器。
接下来我们来说一下 SpringBoot 的起步依赖
1.1 SpringBoot的起步依赖
我们创建的SpringBoot工程中的pom.xml配置文件中生成了很多包含starter的依赖
<?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>3.2.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.hyj</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>demo</description>
<properties>
<java.version>17</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>
这些依赖就是启动依赖,我们来看一下它是如何实现的
1.2 探索依赖
在我们创建的工程中的 pom.xml 中配置了如下依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
点击ctrl+鼠标左键进入该依赖,我们能够发现它引入了如下的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>3.2.5</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>6.1.6</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>6.1.6</version>
<scope>compile</scope>
</dependency>
这里面引入了spring-web 和 spring-webmvc 的依赖,这就是为什么我们的工程中没有依赖这两个包还能正常使用 springMVC 中的注解的原因
而依赖 spring-boot-starter-tomcat ,从名字基本能确认内部依赖了 tomcat ,所以我们的工程才能正常启动
从中我们可知:以后需要使用技术,只需要引入该技术对应的起步依赖即可
小结:
1.starter
- SpringBoot 中常见项目名称,定义了当前项目使用的所有项目坐标,以达到减少依赖配置的目的
2.parent
-
所有 SpringBoot 项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),以达到减少依赖冲突的目的
-
spring-boot-starter-parent (2.5.0)与 spring-boot-starter-parent (2.4.6)共计57处坐标版本不同
3.实际开发
-
使用任意坐标时,只需要书写groupid和artifactid,version会由SpringBoot提供
-
如发生坐标错误,再指定version(要小心版本冲突)
1.3 程序启动
我们创建每一个SpringBoot工程时,都会自动生成一个Application类
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
注意:
-
SpringBoot 在创建项目时,采用jar的打包方式
-
SpringBoot 的引导类是项目的入口,运行 main 方法就可以启动项目
因为我们在 pom.xml 中配置了 spring-boot-starter-web 依赖,而该依赖通过前面的学习知道它依赖 tomcat ,所以 运行 main 方法就可以使用 tomcat 启动咱们的工程
2.1 配置文件格式
我们现在启动服务器默认的端口号是 8080 ,访问路径可以书写为
http://localhost:8080/books/1
在线上环境我们还是希望将端口号改为 80 ,这样在访问的时候就可以不写端口号了,如下
http://localhost/books/1
而 SpringBoot 程序如何修改呢? SpringBoot 提供了多种属性配置方式
- application.properties
server.port=80
- application.yml
server:
port: 81
- application.yaml
server:
port: 82
注意: SpringBoot 程序的配置文件名必须是 application ,只是后缀名不同而已
2.2 环境准备
这里我们依旧在包下创建一个Controller类
@RestController
@RequestMapping("/books")
public class Controller {
@GetMapping("/{id}")
public String getById(@PathVariable Integer id) {
return "Hello World";
}
}
2.3 不同配置文件演示
- application.properties 配置文件
现在需要进行配置,配合文件必须放在 resources 目录下,而该目录下有一个名为 application.properties 的配置文 件,我们就可以在该配置文件中修改端口号,在该配置文件中书写 port , Idea 就会提示,如下
application.properties 配置文件内容如下
server.port=80
启动程序,会在控制台打印出日志信息,从日志信息中可以看到绑定的端口号已经修改成80
- application.yml配置文件
删除 application.properties 配置文件中的内容。在 resources 下创建一个名为 application.yml 的配置文件,在 该文件中书写端口号的配置项,格式如下:
server:
port: 81
注意: 在 : 后,数据前一定要加空格
而在 yml 配置文件中也是有提示功能的,我们也可以在该文件中书写 port ,然后 idea 就会提示并书写成上面的格式
启动程序,会在控制台打印出日志信息,从日志信息中可以看到绑定的端口号已经修改成81
- application.yaml配置文件
删除 application.yml 配置文件和 application.properties 配置文件内容,然后在 resources 下创建名为 application.yaml 的配置文件,配置内容和后缀名为 yml 的配置文件中的内容相同,只是使用了不同的后缀名而已 application.yaml 配置文件内容如下:
server:
port: 82
启动程序,会在控制台打印出日志信息,从日志信息中可以看到绑定的端口号已经修改成82
2.4不同配置文件的优先级
在三种配合文件中分别配置不同的端口号,启动服务查看绑定的端口号。用这种方式就可以看到哪个配置文件的优先级更高 一些
application.properties 文件内容如下:
server.port=80
application.yml 文件内容如下:
server:
port: 81
application.yaml 文件内容如下:
server:
port: 82
启动服务,在控制台可以看到使用的端口号是 80 。说明 application.properties 的优先级最高
注释掉 application.properties 配置文件内容。再次启动服务,在控制台可以看到使用的端口号是 81 ,说明 application.yml 配置文件为第二优先级
从上述的验证结果可以确定三种配置文件的优先级是:
application.properties > application.yml > application.yaml
注意: SpringBoot 核心配置文件名为 application SpringBoot 内置属性过多,且所有属性集中在一起修改,在使用时,通过提示键+关键字修改属性 例如要设置日志的级别时,可以在配置文件中书写 logging ,就会提示出来。配置内容如下
logging:
level:
root: info