3.1、环境搭建

3.1.1、在project创建新module

3.1.2、选择maven

3.1.3、设置module名称和路径

3.1.4、module初始状态

3.1.5、引入springboot父工程

    <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.18</version>
</parent>

3.1.6、引入启动器依赖

    <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

3.1.7、创建启动类

package online.liaojy;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; /**
* @author liaojy
* @date 2023/12/18 - 6:24
*/
@SpringBootApplication
public class MainApplication { public static void main(String[] args) {
SpringApplication.run(MainApplication.class,args);
} }

3.1.8、创建控制器

package online.liaojy.controller;

import org.springframework.web.bind.annotation.RestController;

/**
* @author liaojy
* @date 2023/12/18 - 7:04
*/
@RestController
public class TestController { }

3.2、统一配置管理概述

  • 在 Spring Boot 工程中,实行统一的配置管理,即所有参数配置都会集中到一个固定位置和命名的文件中;

  • 配置文件的固定位置是在 src/main/resources 目录下,该目录是 Spring Boot 工程默认的类路径(classpath);

  • 配置文件的命名格式为:application+后缀+扩展名,扩展名可以是 properties 、yaml 或 yml ;

  • 如果 application.properties 和 application.yml(.yaml) 同时存在,则 properties 的优先级更高。

在 Spring Boot 工程的统一配置文件中,有自定义的参数项,也有固定的参数项,固定的参数项及默认值见 Spring Boot 官方文档:

https://docs.spring.io/spring-boot/docs/2.7.18/reference/html/application-properties.html

3.3、properties配置文件

3.3.1、创建application.properties配置文件

# application.properties 为统一配置文件,既可以配置固定功能的参数项,也可以配置自定义的参数项

# 固定功能参数项的示例
server.port=8088
server.servlet.context-path=/application # 自定义参数项的示例
my.name=liaojy

3.3.2、读取配置文件中的参数值

在统一配置文件中的参数项的值,都可以使用@Value("${键}")的方式直接读取,但一般都是读取自定义的参数项的值

    @Value("${my.name}")
private String name; @RequestMapping("/readApplication")
public String readApplication(){
return "Hello,"+name+"!";
}

3.3.3、测试效果

3.4、yaml配置文件(了解)

3.4.1、yaml概述

  • YAML(YAML Ain’t Markup Language)是一种基于层次结构的数据表示方式;

  • YAML配置文件的扩展名,可以是 yaml ,也可以是 yml ;

  • YAML 配置文件中的键和值之间使用冒号 “ : ” 分隔,并使用缩进表示层级关系,可以减少冗余的内容;

  • 相比起 properties 配置文件,YAML 配置文件支持复杂的数据类型,集合类型可以通过减号 “ - ” 来表示。

注意:因为 YAML 配置文件无法搜索完整的参数项名称,且空格和缩进的格式经常被人诟病,所以本文更推荐使用 properties 配置文件

3.4.2、创建application.yml配置文件

# application.yml 为统一配置文件,既可以配置固定功能的参数项,也可以配置自定义的参数项

# 固定功能参数项的(properties)示例
# server.port=8088
# server.servlet.context-path=/application # 固定功能参数项的(yml)示例
server:
port: 8088 # 注意冒号 “ : ” 和值之间有一个空格
servlet:
context-path: /application # 自定义参数项的(properties)示例,properties不支持复杂的数据类型
# my.name=liaojy # 自定义参数项的(yml)示例
my:
name: liaojy
hobby: # yml支持复杂的数据类型,,集合类型可以通过减号 “ - ” 来表示
- book
- music
- movie

3.4.3、读取配置文件中的参数值

读取 YAML 配置文件中参数值的方式,和读取 properties 配置文件中参数值的方式相同,都是使用@Value("${键}")的方式直接读取;

需要注意的是,使用@Value("${键}")的方式,不能读取集合类型(本例为 my.hobby )的值,

如果希望读取集合类型的值,则需要使用 @ConfigurationProperties 注解(详细见3.5节)

@Value("${my.name}")

3.4.4、测试效果

3.5、配置的批量注入

3.5.1、创建组件类

package online.liaojy.pojo;

import org.springframework.stereotype.Component;

import java.util.List;

/**
* @author liaojy
* @date 2023/12/19 - 7:12
*/
// @Component 注解的作用是将类标识为bean组件,因为只有在ioc容器中才能使用依赖注入给成员变量赋值
@Component
public class Me { private String name; private List<String> hobby; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public List<String> getHobby() {
return hobby;
} public void setHobby(List<String> hobby) {
this.hobby = hobby;
} @Override
public String toString() {
return "Me{" +
"name='" + name + '\'' +
", hobby=" + hobby +
'}';
} }

3.5.2、创建控制器方法

    @Autowired
private Me me; @RequestMapping("/me")
public Me me(){
return me;
}

3.5.3、@Value注解的不足

  • @Value 注解需要一个个读取配置文件中的参数值到成员变量中;

  • @Value 注解只能读取单个值,不能读取集合类型(本例为 my.hobby )的值。

    @Value("${my.name}")
private String name; @Value("${my.hobby}")
private List<String> hobby;

3.5.4、@ConfigurationProperties注解

  • @ConfigurationProperties 注解是 spring boot 提供的重要注解,其作用是可以将配置批量注入到 bean 对象中;

  • 只要 @ConfigurationProperties 注解指定的前缀 + bean 对象中的属性名称,和配置文件中的“键”保持一致即可注入成功;

  • 该注解的优点除了方便(不需要一个个读取配置文件中的参数值到成员变量中)之外,还支持给集合类型赋值。

@ConfigurationProperties(prefix = "my")

3.5.5、测试配置批量注入的效果

3.6、多环境的配置

  • 在一个项目的实际过程中,会存在不同的环境,例如开发、测试和生产环境;

  • 在不同的环境中,会使用不同的参数配置,例如数据库信息和日志级别等;

  • 在 spring boot 中,可以根据不同的运行环境来加载不同的配置。

注意:如果希望默认配置文件不太臃肿,也可以使用该功能将不同模块的配置参数存放到不同的配置文件中

3.6.1、配置文件分离

创建一个用于开发环境的配置文件 application-dev.properties

# 该文件的配置用于开发环境

my.name=liaojy_dev

创建一个用于测试环境的配置文件 application-test.properties

# 该文件的配置用于测试环境

my.name=liaojy_test

创建一个用于测试环境的配置文件 application-prod.properties

# 该文件的配置用于生产环境

my.name=liaojy_prod

3.6.2、激活配置文件

# application.properties(.yml) 是 spring boot 的默认配置文件
# 如果没有额外激活其他(有后缀的)配置文件,则默认只使用 application.properties(.yml) my.name=liaojy_default # spring.profiles.active 参数用于激活指定的配置文件
# 本例激活的是 application-dev.properties 配置文件
# 如果想激活多个配置文件,则使用逗号分隔,例如:spring.profiles.active=dev,test
spring.profiles.active=dev

3.6.3、配置参数的优先级

  • 如果设置了 spring.profiles.active ,但和 application.properties 无重叠的配置参数,则application.properties 的配置参数依然生效;

  • 如果设置了 spring.profiles.active ,并且和 application.properties 有重叠的配置参数,则以激活的配置参数优先;

  • 如果设置了 spring.profiles.active ,并且激活多个配置文件以及有重叠的配置参数,则以最后激活的配置参数优先。

3.6.4、测试效果

3、SpringBoot2之配置文件的更多相关文章

  1. SpringBoot2.x配置文件讲解

    SpringBoot2.x配置文件讲解 简介:SpringBoot2.x常见的配置文件 xml.yml.properties的区别和使用 xml.properties.json.yaml 1.常见的配 ...

  2. SpringBoot2中配置文件的调整,升级SpringBoot2时候注意的坑

    原来使用SpringBoot1.5最近写个demo后发现原来的配置文件不能用了. 最后上网查询了一下资料,springboot2.0和spring1.x还是存在不少问题的. 1.问题一:Java版本要 ...

  3. 【SpringBoot】SpringBoot热部署和配置文件自动注入实战

    ========================3.SpringBoot热部署devtool和配置文件自动注入实战 ============================ 1.SpringBoot2 ...

  4. 零基础快速入门SpringBoot2.0教程 (二)

    一.SpringBoot2.x使用Dev-tool热部署 简介:介绍什么是热部署,使用springboot结合dev-tool工具,快速加载启动应用 官方地址:https://docs.spring. ...

  5. SpringBoot2配置prometheus浏览器访问404

    背景:SpringBoot2的项目要配置 actuator + prometheus的健康检查,按照教程配置好之后再浏览器测试 http://localhost:port/prometheus 后40 ...

  6. [转]小D课堂 - 零基础入门SpringBoot2.X到实战_汇总

    原文地址:https://www.cnblogs.com/wangjunwei/p/11392825.html 第1节零基础快速入门SpringBoot2.0 小D课堂 - 零基础入门SpringBo ...

  7. 小D课堂 - 零基础入门SpringBoot2.X到实战_汇总

    第1节零基础快速入门SpringBoot2.0 小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_1.SpringBoot2.x课程介绍和高手系 ...

  8. Spring Boot 2.x零基础入门到高级实战教程

    一.零基础快速入门SpringBoot2.0 1.SpringBoot2.x课程全套介绍和高手系列知识点 简介:介绍SpringBoot2.x课程大纲章节 java基础,jdk环境,maven基础 2 ...

  9. sentinel-实战

    sentinel-实战笔记 什么是Sentinel Sentinel是阿里开源的项目,提供了流量控制.熔断降级.系统负载保护等多个维度来保障服务之间的稳定性. Sentinel主要特性: 获取Sent ...

  10. SpringBoot2.x入门教程:理解配置文件

    前提 这篇文章是<SpringBoot2.x入门>专辑的第4篇文章,使用的SpringBoot版本为2.3.1.RELEASE,JDK版本为1.8. 主要介绍SpringBoot配置文件一 ...

随机推荐

  1. c# .net mvc 使用百度Ueditor富文本框上传文件(图片,视频等)

    使用背景: 项目中需要用的富文本框去上传视频,图片的话大部分都是可以的.相对来说,国外的富文本框很成熟.但鉴于文档是英语,这里使用了百度的富文本框. 采用的api的方式,调用接口进行上传文件.话不多说 ...

  2. k8s数据持久化

    前面的学习,我们已经基本完成了在k8s中部署一个web服务,运行pod.创建service.创建ingress对外提供域名的七层代理. 下一个环境就得去关注应用部署后的数据存储问题,容器化如何管理,k ...

  3. typescript class属性定义的先后问题

    example e.g. 1 e.g. 2 e.g. 3 解释 在 typescript 中 定义一个 class class 的 constructor 里面的语句在转义成 JavaScript 之 ...

  4. json字符串转换对象或列表,多了字段不会报错

    json字符串转换对象或列表,多了字段不会报错 //DEMO1 转换对象 应用 riskId public class Item { private String id; private String ...

  5. SQLite vs MySQL vs PostgreSQL对比总结

    开发业务系统时,是绕不开RDBMS(关系型数据库)的.虽然现在诞生了各种NoSQL的数据库,RDBMS在业务系统中的严谨和优势依然无法取代. 近几年大大小小的项目中,常用的三种RDBMS(SQLite ...

  6. 【长文】带你搞明白Redis

    本文使用第一人称来介绍Redis 一.概述 Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化 ...

  7. Flink状态(二)

    Flink提供了不同的状态存储方式,并说明了状态如何存和存储在哪里. 状态可以被存储在Jvm的堆和堆外.根据状态存储方式的不同,Flink也能代替应用管理状态,意思是Flink能够进行内存管理(有必要 ...

  8. transformer原理

    Transformer注意力架构原理 输入层 embedding词嵌入向量 将文本中词汇的数字表示转变为向量表示,在这样的高维空间捕捉词汇间的关系 语义相近的词语对应的向量位置也更相近 每个词先通过词 ...

  9. iOS11之后刷新tableview会出现漂移的现象解决办法

    首先要注意这只是在iOS11下会出现的bug,如果iOS10以及以下也有问题的情况不属于此列 问题的动图如下所示,如果要做每隔一段短时间就刷新一个section甚至整个tableview的操作的时候会 ...

  10. SNAT,DNAT以及REDIRECT转发详解

    最近负责的其中一个项目的服务器集群出现了点网络方面的问题,在处理过程当中又涉及到了防火墙相关的知识和命令,想着有一段时间没有复习这部分内容了,于是借着此次机会复写了下顺便将本次复习的一些内容以博客的形 ...