博客
关于我
SpringBoot——配置文件的相关介绍
阅读量:357 次
发布时间:2019-03-04

本文共 2684 字,大约阅读时间需要 8 分钟。

Spring Boot配置文件详解

1. 配置文件

Spring Boot使用一个全局的配置文件,文件名为固定的application.properties或application.yml。配置文件的作用是修改Spring Boot自动配置的默认值,Spring Boot会自动为我们配置好很多参数。

1.1 配置文件类型

  • application.properties:以键值对形式存储配置信息。
  • application.yml:使用YAML格式存储配置信息,更加适合数据化配置。

1.2 配置文件的作用

  • 修改Spring Boot自动配置的默认值。
  • Spring Boot会自动为我们配置好很多参数,但我们可以通过配置文件来修改这些默认值。

2. YAML语法

YAML( Yet Another MarkDown Language)是一种标记语言,广泛用于配置文件中。YAML的特点是以数据为中心,适合存储配置信息。

2.1 YAML语法基础

  • 键值对:key: value,键和值之间必须有空格。
  • 缩进:通过缩进来表示数据的层级关系,左对齐的字段属于同一层级。
  • 普通值:包括数字、字符串、布尔值等。
  • 字符串处理:
    • 双引号":不会转义特殊字符。
    • 单引号' ':会转义特殊字符。
  • 映射(对象):key: value,下一行继续写对象属性。
  • 数组(List、Set):用-表示数组中的元素。

2.2 YAML示例

server:  port: 8088

2.3 YAML与XML对比

server:  port: 8888
8081

3. 配置文件值注入

3.1 @Value和@ConfigurationProperties

  • @Value:用于注入单个值,需要手动指定值。
  • @ConfigurationProperties:用于批量注入配置文件中的属性,支持复杂类型封装。

3.2 示例

@Component@ConfigurationProperties(prefix = "person")public class Person {    private String lastName;    private Integer age;    private Boolean boss;    private Date birth;    private Map
maps; private List
lists; private Dog dog;}

3.3 application.yml配置示例

server:  port: 8081person:  age: 12  boss: true  last-name: zlj  birth: 2022/12/17  maps:    k2: v2    k1: v1  lists:    - zlj    - zzg  dog:    name: z    age: 13

3.4 @PropertySource和@ImportResource

  • @PropertySource:用于加载指定配置文件。
  • @ImportResource:用于导入Spring的配置文件。

3.5 示例

@Component@PropertySource(value = {"classpath:person.properties"})@ConfigurationProperties(prefix = "person")public class Person {    // ...}

4. 配置文件占位符

4.1 随机数

  • ${random.value}:随机值
  • ${random.int}:随机整数
  • ${random.long}:随机长整数
  • ${random.int(10)}:生成长度为10的随机整数
  • ${random.int[1024,65536]}:在1024到65536之间生成随机整数

4.2 拼接已有配置值

person:  age: 12  boss: true  last-name: zlj  birth: 2022/12/17  maps:    k2: ${random.int}    k1: ${random.int}  lists:    - zlj    - zzg  dog:    name: zl    age: 13

4.3 application.properties拼接示例

person.last-name=张三${random.uuid}person.age=${random.int}person.birth=2017/12/15person.boss=falseperson.maps.k1=v1person.maps.k2=14

5. Profile配置

5.1 多文档块方式

spring:  profiles:    active: dev  http:    encoding:      default: UTF-8

5.2 激活指定Profile

  • 配置文件中指定:spring.profiles.active=dev
  • 命令行参数:java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
  • 虚拟机参数:-Dspring.profiles.active=dev

6. 配置文件加载位置

Spring Boot会从以下位置加载application.properties或application.yml:

  • file:./config/
  • file:./
  • classpath:/config/
  • classpath:/
  • 6.1 自定义配置文件位置

    java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.properties

    7. 自动配置

    Spring Boot会自动加载大量自动配置类,主要功能包括:

    • 数据库配置(MySQL、MongoDB等)
    • Web配置(嵌入式服务器、热部署等)
    • 日志配置
    • 安全配置(Basic、Form-based等)
    • 角色配置(RBAC)

    我们只需要关注Spring Boot默认配置中没有覆盖的部分,并通过配置文件修改需要自定义的参数。

    转载地址:http://peqq.baihongyu.com/

    你可能感兴趣的文章
    Python基础 | 关于“循环”那些事
    查看>>
    python系列【仅供参考】:python 远程rdp
    查看>>
    python基于flask搭建http服务(四)—— Docker容器化部署
    查看>>
    Python块键盘/鼠标输入
    查看>>
    python在使用HTMLTestRunner时,报告为空,错误提示<_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf_8'>...
    查看>>
    python在gpu上运行_【python】python开启GPU加速
    查看>>
    Python在def函数中使用for循环
    查看>>
    Python在def函数中使用for循环
    查看>>
    Python在Conda环境中,但在Windows虚拟环境中没有激活
    查看>>
    python系列【仅供参考】:python pip 错误 ModuleNotFoundError: No module named pip._internal 解决办法
    查看>>
    python图像条状状噪声,使用PYTHON PIL从验证码图像中删除背景嘈杂的线条
    查看>>
    Python图像处理:从内存加载jpeg
    查看>>
    python固定后缀(名物化词汇)词频统计:抽取+统计+可视化
    查看>>
    python商品评论数据采集与分析可视化系统 Flask框架 requests爬虫 NLP情感分析 毕业设计 源码
    查看>>
    python商品数据分析可视化系统(带爬虫)京东销售数据分析 计算机毕业设计 源码下载
    查看>>
    python商品库存管理系统 django框架 商品网站 MySQL数据库 源码下载 计算机毕业设计
    查看>>
    Python哪个版本最稳定好用2023.10.19
    查看>>
    Python和黑客技术的渊源
    查看>>
    Python和RF编写接口自动化
    查看>>
    python和js哪个难_【Python】记一次学习,Python 与 js 在实现闭包时的差异
    查看>>