Spring Boot框架

一.SpringBoot简介

1.1 设计初衷

目前我们开发的过程当中,一般采用一个单体应用的开发采用

SSM等框架进行开发,并在 开发的过程当中使用了大量的xml

等配置文件,以及在开发过程中使用MAVEN的构建工具来进

行构建项目,但是往往有时也会出现依赖的一些冲突,而且开

发的时候测试还需要下载和使用tomcat等等这些servlet容

器,所以开发的效率不高。

那么在以上的问题中,我们就可以使用springboot来解决这些

问题,当然他不仅仅是解决这些问题,来提高我们的开发人员

的开发效率。使用springboot:可以不需要配置,可以不需要

自己单独去获取tomcat,基本解决了包依赖冲突的问题,一键

发布等等特性。

1.2 SpringBoot介绍

Spring Boot 可以帮助我们开发 基于Spring的 、独立的 、生

产级的 应用程序。

为所有Spring开发提供更快的入门体验

开箱即用,提供了自动配置

提供一系列大型项目通用的非功能性特性

外部化配置:

嵌入式服务器

安全性

健康检查

指标:

完全不需要代码生成,也不需要XML配置

springboot 就是一个基于spring的一个框架。提供了一些

自动配置的依赖包,自动嵌入servlet的容器,简化了我们

开发的配置,提升开发人员的开发效率,并解决了包依赖

的问题。

二.SpringBoot入门案例

2.1 快速入门

创建Maven工程

  1. pom.xml文件中配置起步依赖

  2. 编写SpringBoot启动引导类

  3. 编写HelloController

  4. 访问http://localhost:8080/hello测试

创建Maven工程

pom.xml文件中配置起步依赖

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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lzw</groupId>
<artifactId>springboot_01</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<!--所有的springboot工程需要继承的父工程-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.10.RELEASE</version>
</parent>

<dependencies>
<!--web开发的相关依赖 场景启动器依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

</dependencies>
</project>

编写SpringBoot启动引导类

简单点这个就相当于Spring的配置类

java 复制代码
/**
* @SpringBootApplication 标识是SpringBoot的启动类
*/
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}

编写HelloController

java 复制代码
@RestController
public class HelloController {
@RequestMapping("/hello")
public String Hello(){
return "hello SpringBoot";
}
}

访问http://localhost:8080/hello测试

2.2 @SpringBootApplication分析

@SpringBootApplication是一个组合注解

@SpringBootConfiguration注解作用

* @SpringBootConfiguration是对@Configuration注解

的包装,proxyBeanMethods 默认配置 true, full模式

(单例Bean)

标识是一个配置类,所以 引导类也是配置类

@ComponentScan注解作用

* 组件扫描,默认扫描的规则 引导类所在的包及其子包所

有带注解的类

2.3 添加父工程坐标分析

通过点击spring-boot-starter-parent父工程发现,它的父工

程是:

进入到spring-boot-dependencies工程中发现:声明了所有

开发中常用的依赖的版本号,自动版本号的控制(当然也可以

修改)。我们的项目需要以这个项目为父工程,这样我们就不

用操心依赖的版本问题 了,需要什么依赖,直接引入坐标(不

需要添加版本)即可!

见到的spring-boot-starter-*: 第三方为我们提供的简化开发

的[场景启动器]

2.4 关于stater分析

再次从工程中 点击spring-boot-starter-web进入依赖管理:

分析spring-boot-starter-web依赖发现:内部把关于web

MVC开发所有的依赖都已经导入并且版本控制完成了,我们

只需引入 spring-boot-starter-web 这个依赖就可以实现我们

的 Web MVC的功能!

总结:

所有SpringBoot项目要继承的项目,定义了若干个坐标版

本号(依赖管理,而非依赖),以达到减少依赖冲突的目

starter是SpringBoot中常见项目名称,定义了当前项目使

用的所有项目坐标,以达到减少依赖配置的目的

三.SpringBoot配置文件

3.1 三种配置文件及优先级

SpringBoot是约定大于配置 的,所以很多配置都有默认值。

如果想修改默认配置,可以用application.properties或

application.yml(application.yaml)自定义配置。SpringBoot

默认从Resource目录加载自定义配置文件。

配置文件必须放置在项目的类加载目录下, 并且名字必须是
application

属性配置文件:application.properties

yml文件:application.yml

yaml文件:application.yaml

文件加载的优先级

3.2 yml配置文件

yml介绍

YML文件格式是YAML(YAML Aint Markup Language)编写的

文件格式。可以直观被电脑识别的格式。容易阅读,容易与脚

本语言交互。可以支持各种编程语言(C/C++、Ruby、

Python、Java、Perl、C#、PHP)。以数据为核心,比XML更
简洁
。扩展名为.yml或.yaml;

配置文件语法:

*大小写敏感

*数据值前边必须有空格,作为分隔符

*使用缩进表示层级关系

*缩进不允许使用tab,只允许空格

*缩进的空格数不重要,只要相同层级的元素左对齐即可

*数组和集合使用 "- "表示数组每个元素。减号与数据间

空格分隔

*#'表示注释,从这个字符一直到行尾,都会被解析器忽略。

3.3 获取配置文件中值

方式1:使用@value注解的方式 只能获取简单值

方式2. 使用@ConfigurationProperties

使用@value注解的方式

java 复制代码
@RestController
public class HelloController {
@Value("${employee.empId}")
private Integer empId;
@Value("${employee.empName}")
private String empName;
@Value("${employee.empSalary}")
private Double empSalary;
@Value("${employee.address[0]}")
private String addr;
@RequestMapping("/hello")
public String Hello(){
System.out.println(empId+"..."+empName+"..."+empSalary+"..."+addr);
return "hello SpringBoot";
}
}

使用@ConfigurationProperties

通过注解@ConfigurationProperties(prefix=''配置文件中的

key的前缀")可以将配置文件中的配置自动与实体进行映射。

使用@ConfigurationProperties方式必须提供Setter方法,使

用@Value注解不需要Setter方法。

创建一个Employee实体类:

java 复制代码
@Component
@ConfigurationProperties(prefix = "employee")
public class Employee {
private Integer empId;
private String empName;
private Double empSalary;
private String[] address;
public Integer getEmpId() {
return empId;
}
public void setEmpId(Integer empId) {
this.empId = empId;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public Double getEmpSalary() {
return empSalary;
}
public void setEmpSalary(Double empSalary) {
this.empSalary = empSalary;
}
public String[] getAddress() {
return address;
}
public void setAddress(String[] address) {
this.address = address;
}
@Override
public String toString() {
return "Employee{" +
"empId=" + empId +
", empName='" + empName + '\'' +
", empSalary=" + empSalary +
", address=" +
Arrays.toString(address) +
'}';
}
}
java 复制代码
@RestController
public class HelloController {
@Autowired 
private Employee employee;
@RequestMapping("/hello")
public String Hello(){
System.out.println(employee);
return "hello SpringBoot";
}
}
html 复制代码
自定义对象封装数据解决警告
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
四.SpringBoot多环境配置

4.1 yml文件多环境开发配置

Spring Boot项目中配置文件的名称只能是application , 如果

我们把所有的配置全都写在一个配置文件中如果配置项比较

多, 配置文件就会显得比较复杂和臃肿 ! 不利于后期的项目维

护和开发

因为开发环境变化, 我们需要修改配置文件中某一个配置项

的值(比如之前是mysql数据库,切换oracle数据库)

项目开发完成需要上线了 , 需要把一些环境修改成正式环

境(开发,测试,上线,多环境切换)

解决方案 :使用profiles拆分配置

spring boot项目中允许使用多个YAML配置文件。

这些文件名称必须为application-*.yml,并且在

application.yml中激活。

application-dev.yml

application-test.yml

application-pro.yml

在application.yml激活

*添加打包插件

jar支持命令行启动需要依赖maven插件支持,请确认打包时

是否具有SpringBoot对应的maven插件

XML 复制代码
<!-- SpringBoot应用打包插件-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

在idea点击package进行打包

4.3 多环境启动命令格式

4.4 配置文件位置分类

位置:

file :config/application.yml 【最高】

file :application.yml

classpath:config/application.yml

classpath:application.yml 【最低】

作用:

1级与2级留做系统打包后设置通用属性

3级与4级用于系统开发阶段设置通用属性

相关推荐
神仙别闹44 分钟前
基于java的改良版超级玛丽小游戏
java
黄油饼卷咖喱鸡就味增汤拌孜然羊肉炒饭1 小时前
SpringBoot如何实现缓存预热?
java·spring boot·spring·缓存·程序员
暮湫1 小时前
泛型(2)
java
超爱吃士力架1 小时前
邀请逻辑
java·linux·后端
南宫生2 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
转码的小石2 小时前
12/21java基础
java
李小白662 小时前
Spring MVC(上)
java·spring·mvc
GoodStudyAndDayDayUp2 小时前
IDEA能够从mapper跳转到xml的插件
xml·java·intellij-idea
装不满的克莱因瓶3 小时前
【Redis经典面试题六】Redis的持久化机制是怎样的?
java·数据库·redis·持久化·aof·rdb
n北斗3 小时前
常用类晨考day15
java