SpringBoot 及 配置文件

一、什么是 SpringBoot?

Spring 是包含了众多工具的IoC容器,Spring Boot 是 Spring 的脚手架,是为了快速开发 Spring 而创建的一个框架。

二、Spring Boot 优点

  • 快速集成框架,Spring Boot 提供了启动添加依赖的功能,用于秒级集成各种框架。
  • 内置运行容器,无需配置 Tomcat 等 Web 容器,直接运行和部署程序。
  • 快速部署项目,无需外部容器即可启动并运行项目。
  • 可以完全抛弃繁琐的 XML,使用注解和配置的方式进行开发。
  • 支持更多的监控的指标,可以更好的了解项目的运行情况。

三、SpringBoot 工程目录

PS: 在 SpringBoot 项目中将 Bean 注册到容器中不在需要进行配置了。但所有你需要存放到容器里的类,必须要放到 启动类的同级目录中,或者放到启动类的子目录中。 (约定大于配置)

四、SpringBoot 配置文件

对于整个项目来说,配置文件是非常重要的,它里面通常保存了一些重要的数据,例如:

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

1、配置文件的格式

SpringBoot 的配置文件主要有两种格式:

  1. 后缀名为.properties
  2. 后缀名为.yml

配置文件中的配置项分为两类:

  1. 系统配置项。:点击这里查看官方文档
  2. 自定义配置项。

概要说明:

  1. .properties 类型的配置文件,是创建 Spring Boot 项目时默认的文件格式。
  2. 理论上讲,properties 可以和 yml 一起存在于一个项目当中,当 properties 和 yml ⼀起存在⼀个项目中时,如果配置文件中出现了同样的配置,那么这个时候会以 properties 中的配置为主,也就是 .properties 配置文件的优先级最高,但加载完 .properties 文件之后,也会加载 .yml 文件的配置信息
  3. 虽然 .properties 可以和 .yml 共存,但实际的业务当中,我们 通常会采取一种统一的配置文件格式,这样可以更好的维护(降低故障率)。

2、properties 配置文件

文件内容语法说明:properties 中的配置项是以键值的形式配置的,keyvalue 之间是以 “=” 连接的。

例子:设置配置项

# 配置项⽬端⼝号
server.port=8081
# 配置 JDBC
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/dbname?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root

例子:读取配置项

读取配置文件中的内容,可以使用 @Value 注解来实现。@Value 注解使用“${}”的格式读取。

@Controller
@ResponseBody
public class Test {
    
    
	// 读取配置项
    @Value("${server.port}")
    private String myConfig;
}

虽然 properties 的配置文件结构比较清晰,但是当配置注入 JDBC 时会出现很多的冗余信息,比如上述重复出现的 spring.datasource。想要解决这个问题,我们可以考虑使用 yml 格式的配置文件。

3、yml 配置文件

yml 全称 (Yet Another Markup Language)。yml 是树形结构的配置文件,它的 基础语法是“key: value”,注意 key 和 value 之间使用 英文冒汗加空格 的方式组成的,其中的空格不可省略。

例子:设置配置项

spring:
  datasource:
    url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8
    username: root
    password: 123456

和上面使用 properties 文件配置数据库连接进行对比可以发现,当前场景下,使用 yml 可以减少大量冗余信息。

例子:读取配置项

yml 中读取配置文件中的内容和 properties 相同,可以使用 @Value 注解来实现。@Value 注解使用“${}”的格式读取。

@Controller
@ResponseBody
public class Test {
    
    
	// 读取配置项
    @Value("${spring.datasource.url}")
    private String myConfig;
}

除了以上基础的功能外,在 yml 中还可以 配置对象:

stu:
  name: 张三
  password: 123456
  id: 123

使用 @ConfigurationProperties 读取对象

@Controller
@ConfigurationProperties("stu")
@Data
public class User {
    
    
    private String name;
    private String password;
    private int id;

    @Override
    public String toString() {
    
    
        return "User{" +
                "name='" + name + '\'' +
                ", password='" + password + '\'' +
                ", id=" + id +
                '}';
    }
}

4、多环境配置文件

一般代码的运行环境主要为以下三种:

  1. 本地开发环境
  2. 测试环境
  3. 生产环境

为了满足多个环境下的配置需求,可以创建多个用于不同环境的配置文件:

  1. application.properties:默认的配置文件,包含共享的属性。
  2. application-dev.properties:开发环境的配置文件
  3. application-test.properties:测试环境的配置文件
  4. application-prod.properties:生产环境的配置文件

我们可以通过在 application.properties 配置文件中指定运行环境的配置文件:

PS: 在 Spring 中,配置文件的命名约定是基于 application-{profile}.propertiesapplication-{profile}.yml 的格式,其中 {profile} 是 spring.profiles.active 属性的值。

# 指定开发环境
spring.profiles.active=dev

5、properties 和 yml 区别

  1. properties 是以 key=value 的形式配置的键值类型的配置文件,而 yml 使用的是类似 json 格式的树形 配置方式进行配置的,yml 层级之间使用换行缩进的方式配置,key 和 value 之间使用“: ”英文冒号加空格的方式设置,并且空格不可省略。
  2. properties 为早期并且 默认的配置文件格式,但其配置存在⼀定的冗余数据,使用 yml 可以很好的解决数据冗余的问题。
  3. yml 通用性更好,支持更多语言,如 Java、Go、Python 等
  4. yml 支持更多的数据类型。如对象、集合等。

猜你喜欢

转载自blog.csdn.net/LEE180501/article/details/132651452