【Spring Boot】掌握Spring Boot:深入解析配置文件的使用与管理

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 【Spring Boot】掌握Spring Boot:深入解析配置文件的使用与管理

Spring Boot 配置文件

一. 配置文件作用

配置文件主要是为了解决硬编码带来的问题,把可能会发生改变的信息,放在⼀个集中的地方,当我们启

动某个程序时,应用程序从配置文件中读取数据,并加载运行.

使用配置文件,可以使程序完成用户和应用程序的交互,或者应用程序与其他应用程序的交互

Spring Boot 配置文件

SpringBoot支持并定义了配置文件的格式,也在另⼀个层⾯达到了规范其他框架集成到SpringBoot的

目的.

很多项目或者框架的配置信息也放在配置文件中,比如:

  • 项目的启动端口
  • 数据库的连接信息(包含用户名和密码的设置)
  • 第三方系统的调用密钥等信息
  • 用于发现和定位问题的普通日志和异常日志等.

数据库连接信息 为了更方便简单的访问数据库,出现了⼀些持久层框架,其实就是对JDBC进行了更深层次的封装.让用

⼾通过简单⼏行代码就可完成数据库的访问.但是不同的应用程序访问的数据库不同,这些持久层框 架就需要⽀持用户可以⾃定义配置数据库的连接信息


二. 配置文件的格式

SpringBoot配置文件有以下三种:

  • application.properties
  • application.yml
  • application.yaml
    yml为yaml的简写,实际开发中出现频率最高.yaml和yml的使用方式⼀样
    当应用程序启动时,SpringBoot会⾃动从classpath路径找到并加载application.properties 和 application.yaml 或者 application.yml 文件.

特别注意:

  1. 理论上讲 .properties 和 .yml 可以并存在于⼀个项目中,当 .properties 和 .yml
    并存时,两个配置都会加载.如果配置文件内容有冲突,则以 .properties 为主,也就是
    .properties 优先级更高.
  2. 虽然理论上来讲 .properties 可以和 .yml 共存,但实际的业务当中,我们通常会采取⼀种
    统⼀的配置文件格式,这样可以更好的维护(降低故障率).

三. 配置 properties 文件

properties配置文件是最早期的配置文件格式,也是创建SpringBoot项目默认的配置文件

3.1 properties 基本语法

properties是以键值的形式配置的,key和value之间是以"="连接的,如:

// 配置项目端口号
server.port=8080
//配置数据库连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?
characterEncoding=utf8&useSSL=false
//配置数据库的用户名
spring.datasource.username=root
//配置数据库的密码
spring.datasource.password=root
3.2 读取 properties 文件

如果在项目中,想要主动的读取配置文件中的内容,可以使用 @Value 注解来实现。

@Value 注解使用" ${} "的格式读取,如下代码所示:

properties配置如下:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class PropertiesController {
  @Value("${mykey.key1}")
  private String key1;
  
  @RequestMapping("/key")
  public String key(){
    return "读取到值:"+key1;
  }
}
3.3 properties 缺点分析

properties配置是以key-value的形式配置的,会产生很多的代码冗余,如下图所示:

从上述配置key看出,properties配置文件中会有很多的冗余的信息,比如这些:

所以在使用时,我们大多数会选用yml配置文件,yml配置文件可以很好的解决代码冗余的问题.

接下来我们来介绍如何去配置yml文件


四. 配置 yml 文件

yml是YAML是缩写,它的全称YetAnotherMarkupLanguage翻译成中文就是“另⼀种标记语言.

我们先来学习yml的语法

4.1 yml 基本语法

yml是树形结构的配置文件,它的基础语法是"key:value".

key和value之间使用英文冒号加空格的方式组成,空格不可省略基础语法如下:

使用yml连接数据库yml使用示例:

```cpp
spring:
  datasource:
    url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8&useSSL=false
    username: root
    password: root
4.2 yml 配置不同数据类型及 null
// 字符串
string.value: Hello
// 布尔值,true或false
boolean.value: true
boolean.value1: false
// 整数
int.value: 10
// 浮点数
float.value: 3.14159
// Null,~代表null
null.value: ~
// "" 空字符串
// 直接后⾯什么都不加就可以了, 但这种方式不直观, 更多的表示是使用引号括起来
empty.value: ''
4.3 yml 的配置读取

yml读取配置的方式和properties相同,使用@Value注解即可,实现代码如下:

yml配置:

string:
hello: Spring Boot
@RestController
public class ReadYml {
  @Value("${string.hello}")
  private String hello;
  
  @RequestMapping("/ymlKey")
  public String key(){
    return "读取到值:"+hello;
  }
}
4.4 配置 集合

配置文件也可以配置list集合,如下所示:

dbtypes:
  name:
    - mysql
    - sqlserver
    - db2

集合的读取和对象⼀样,也是使用 @ConfigurationProperties 来读取的,具体实现如下:

@Component
  @ConfigurationProperties("dbtypes")
  @Data
  
  public class ListConfig {
    private List<String> name;
  }

访问集合的实现如下:

@RestController
public class ReadYml2 {
  @Autowired
  private ListConfig listConfig;
  
  @RequestMapping("/readList")
  public String readList(){
    return listConfig.toString();
  }
}
4.5 配置 Map

配置文件也可以配置map,如下所示:

maptypes:
  map:
    k1: kk1
    k2: kk2
    k3: kk3

Map的读取和对象⼀样,也是使用 @ConfigurationProperties 来读取的,具体实现如下:

@Component
@ConfigurationProperties("maptypes")
@Data
public class MapConfig {
  private HashMap<String,String> map;
}

打印类的实现如下:

@RestController
public class ReadYml2 {
  @Autowired
  private MapConfig mapConfig;
  
  @RequestMapping("/readMap")
  public String readStudent(){
    return mapConfig.toString();
  }
}
4.6 yml 优缺点

优点:

  1. 可读性高,写法简单,易于理解
  2. ⽀持更多的数据类型,可以简单表达对象,数组,List,Map等数据形态.
  3. ⽀持更多的编程语言,不⽌是Java中可以使用,在Golang,Python,Ruby,JavaScript中也可以使用
    缺点:
  4. 不适合写复杂的配置文件
  5. 对格式有较强的要求(⼀个空格可能都会引起错误)


总结

1. properties是以key=value的形式配置的键值类型的配置文件,yml使用的是树形配置方式.
2. 读取配置文件内容,使用 @Value 注解,注解内使用" ${} “的格式读取.
3. yml层级之间使用换行缩进的方式配置,key和value之间使用”:"(英文冒号)加空格的方式设置,并
且空格不可省略.
4. properties为早期并且默认的配置文件格式,其配置存在⼀定的冗余数据,使用yml可以很好的解决
数据冗余的问题,但不适合复杂配置.
5. yml可以和properties共存,但⼀个项目中建议使用⼀种配置类型文件.

相关文章
|
3天前
|
JSON 小程序 UED
微信小程序 app.json 配置文件解析与应用
本文介绍了微信小程序中 `app.json` 配置文件的详细
38 12
|
6天前
|
Java 测试技术 应用服务中间件
Spring Boot 配置文件总结
Spring Boot 提供全局配置文件 `application.properties` 和 `application.yml`,用于修改自动配置的默认值。前者使用键值对配置,后者使用缩进和冒号。不同环境(开发、测试、生产)可切换配置文件,通过 `spring.profiles.active` 指定。例如,开发环境端口为4790,测试环境为4791,生产环境为4792。配置示例展示了属性、List、Map定义及引用方法。
46 14
|
9天前
|
缓存 安全 Java
Spring Boot 3 集成 Spring Security + JWT
本文详细介绍了如何使用Spring Boot 3和Spring Security集成JWT,实现前后端分离的安全认证概述了从入门到引入数据库,再到使用JWT的完整流程。列举了项目中用到的关键依赖,如MyBatis-Plus、Hutool等。简要提及了系统配置表、部门表、字典表等表结构。使用Hutool-jwt工具类进行JWT校验。配置忽略路径、禁用CSRF、添加JWT校验过滤器等。实现登录接口,返回token等信息。
160 12
|
29天前
|
XML Java 数据格式
使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
本文介绍了在使用Spring框架时,如何通过创建`applicationContext.xml`配置文件来管理对象。首先,在resources目录下新建XML配置文件,并通过IDEA自动生成部分配置。为完善配置,特别是添加AOP支持,可以通过IDEA的Live Templates功能自定义XML模板。具体步骤包括:连续按两次Shift搜索Live Templates,配置模板内容,输入特定前缀(如spring)并按Tab键即可快速生成完整的Spring配置文件。这样可以大大提高开发效率,减少重复工作。
使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
|
29天前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
15天前
|
存储 安全 Java
Spring Boot 3 集成Spring AOP实现系统日志记录
本文介绍了如何在Spring Boot 3中集成Spring AOP实现系统日志记录功能。通过定义`SysLog`注解和配置相应的AOP切面,可以在方法执行前后自动记录日志信息,包括操作的开始时间、结束时间、请求参数、返回结果、异常信息等,并将这些信息保存到数据库中。此外,还使用了`ThreadLocal`变量来存储每个线程独立的日志数据,确保线程安全。文中还展示了项目实战中的部分代码片段,以及基于Spring Boot 3 + Vue 3构建的快速开发框架的简介与内置功能列表。此框架结合了当前主流技术栈,提供了用户管理、权限控制、接口文档自动生成等多项实用特性。
62 8
|
27天前
|
缓存 前端开发 Java
【Spring】——SpringBoot项目创建
SpringBoot项目创建,SpringBootApplication启动类,target文件,web服务器,tomcat,访问服务器
|
1月前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
175 5
|
2月前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
192 2
|
2月前
|
前端开发 Java Spring
探索Spring MVC:@Controller注解的全面解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序的基石之一。它不仅简化了控制器的定义,还提供了一种优雅的方式来处理HTTP请求。本文将全面解析`@Controller`注解,包括其定义、用法、以及在Spring MVC中的作用。
70 2

推荐镜像

更多