SpringBoot 及 配置文件

简介: 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 支持更多的数据类型。如对象、集合等。


相关文章
SpringBoot 集成log4j2
SpringBoot 集成log4j2
453 0
SpringBoot 集成log4j2
|
数据安全/隐私保护 Docker 容器
厉害了,如何搭建一套自己的私有网盘?
本文教大家用docker搭建一款自己的私有网盘,教程给大家分享一下。 开源云盘选择 搭建前我仔细看了一下各个开源私有云盘的实现,有以下几种:
591 0
厉害了,如何搭建一套自己的私有网盘?
安装MySQ报错 warning: /var/cache/yum/x86_64/7/mysql80-community/packages/mysql-community-client-8.0.
安装MySQ报错 warning: /var/cache/yum/x86_64/7/mysql80-community/packages/mysql-community-client-8.0.
1699 1
安装MySQ报错 warning: /var/cache/yum/x86_64/7/mysql80-community/packages/mysql-community-client-8.0.
|
JavaScript 前端开发 Java
SpringBoot配置文件 —— 超详细全方位教程
本文是一篇关于SpringBoot配置文件的超详细全方位教程,涵盖了配置文件的作用、SpringBoot中的配置文件格式、优先级、properties和yml配置文件的详解及语法、读取配置文件的方法、转义字符和单双引号的使用、配置对象、集合和Map,以及yml的优缺点。
1698 0
SpringBoot配置文件 —— 超详细全方位教程
|
11月前
|
Java 测试技术 应用服务中间件
Spring Boot 配置文件总结
Spring Boot 提供全局配置文件 `application.properties` 和 `application.yml`,用于修改自动配置的默认值。前者使用键值对配置,后者使用缩进和冒号。不同环境(开发、测试、生产)可切换配置文件,通过 `spring.profiles.active` 指定。例如,开发环境端口为4790,测试环境为4791,生产环境为4792。配置示例展示了属性、List、Map定义及引用方法。
349 14
|
Java 关系型数据库 MySQL
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
这篇文章是关于如何使用Spring Boot框架通过JdbcTemplate操作MySQL数据库的教程。
793 0
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
|
关系型数据库 MySQL 大数据
DataX:数据同步的超音速英雄!阿里开源工具带你飞越数据传输的银河系,告别等待和故障的恐惧!快来见证这一数据工程的奇迹!
【8月更文挑战第13天】DataX是由阿里巴巴开源的一款专为大规模数据同步设计的工具,在数据工程领域展现强大竞争力。它采用插件化架构,支持多种数据源间的高效迁移。相较于Apache Sqoop和Flume,DataX通过并发写入和流处理实现了高性能同步,并简化了配置流程。DataX还支持故障恢复,能够在同步中断后继续执行,节省时间和资源。这些特性使其成为构建高效可靠数据同步方案的理想选择。
900 2
|
Java 开发者 Spring
Springboot中的@Bean用法以及常见问题
【5月更文挑战第27天】@Bean 注解是Spring框架中用于声明Spring应用上下文中的bean的一种方式。在Spring Boot中,@Bean注解通常与@Configuration注解一起使用,在配置类(Configuration class)中定义bean。
1014 2
|
JSON Java 数据库连接
属性注入掌握:Spring Boot配置属性的高级技巧与最佳实践
属性注入掌握:Spring Boot配置属性的高级技巧与最佳实践
400 1
springboot集成swagger2并分组全局设置Authorization
springboot集成swagger2并分组全局设置Authorization
495 0