SpringBoot的常见配置

简介: SpringBoot的常见配置

1. 配置文件格式


问题导入

框架常见的配置文件有哪几种形式?


1.1 修改服务器端口


http://localhost:8080/books/1 >>> http://localhost/books/1


SpringBoot提供了多种属性配置方式


application.properties
server.port=80


application.yml


server:
  port: 81


application.yaml


server:
  port: 82


1.2 自动提示功能消失解决方案


操作步骤:


a5c03940c0437e6f056e993191043a4a_39534cd958937d4082a94114b9fdf3b9.png


b17bdfcb922b0f87107ef22bc40c6c90_a87247ecfe930f7d3798021b94d3a076.png


f7de1b50d3168a88babc5bbe825e9468_6b79f5f810a6396a7ac30be92e539230.png



0d2cee23983d94ae3170bdf180775c14_996d59f0d6106e56c80cc827c7e4b9e3.png


fa6a552b02653f699b764a2637d052ca_42e57e4ff6a6be54053eb970dd96ace5.png


ab4d42f4e0fdb8600d647a7a12106caa_1cf131fdb26d3173a87ce2e4e5a947e7.png


1.3 SpringBoot配置文件加载顺序


application.properties > application.yml > application.yaml

注意事项:


SpringBoot核心配置文件名为application

SpringBoot内置属性过多,且所有属性集中在一起修改,在使用时,通过提示键+关键字修改属性


2. yaml


问题导入

什么是yaml,和properties有什么区别?


YAML(YAML Ain’t Markup Language),一种数据序列化格式

优点:

容易阅读

容易与脚本语言交互

以数据为核心,重数据轻格式

YAML文件扩展名

.yml(主流)

.yaml


2.1 yaml语法规则


大小写敏感

属性层级关系使用多行描述,每行结尾使用冒号结束

使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)

属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)

#表示注释

核心规则:数据前面要加空格与冒号隔开


2.2 yaml数组数据


数组数据在数据书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔


89b849f377366f43ff5d46bc63c8767b_f76fd3ef8daf7d8704908b8ff670ac75.png


2.3 yaml数据读取


使用@Value读取单个数据,属性名引用方式:${一级属性名.二级属性名……}


dc13226567bd2531d8644ceed4058e83_5bac827f08a8acb7f9a7f138df600b59.png


封装全部数据到Environment对象


d4c8c32f13718ba1bdc8a286079efc0e_a063a22de3f01f5eb1e4fdd2eafee5c0.png


自定义对象封装指定数据【常用】


public class Enterprise {
    private String name;
    private Integer age;
    private String tel;
    private String[] subject;
    //自行添加getter、setter、toString()等方法
}


7896643212877f8ce6dd4a3bd2cc4c4b_f8eb1a86e6bc05e016909940cc7bcf93.png


自定义对象封装数据警告解决方案


d004b25c430866039f99228e02172305_f908564225ed283aa294d39f55aa45b1.png


<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>


3. 多环境开发配置


问题导入

在实际开发中,项目的开发环境、测试环境、生产环境的配置信息是否会一致?如何快速切换?


3.1 多环境启动配置


yaml文件多环境启动


0f8442da9d4ee05f66f4de653e7e70d3_f7e4c6e5fc2832cb85eb2177b73eda7d.png


46897b4e8232a6325b4342244c9fde7e_c1ecfa909b7e492018f421b409873ef8.png


efe19c3f8007eafd7d7c667007a2a4c8_800459165a338ce7e9b69592f946bc5c.png



properties文件多环境启动


#主启动配置文件 application.properties
spring.profiles.active=pro


#环境分类配置文件 application-pro.properties
server.port=80


#环境分类配置文件 application-dev.properties
server.port=81


#环境分类配置文件application-test.properties
server.port=82


3.2 多环境启动命令格式


带参数启动SpringBoot


java –jar springboot.jar --spring.profiles.active=test
java –jar springboot.jar --server.port=88
java –jar springboot.jar --server.port=88 --spring.profiles.active=test


参数加载优先顺序

参看文档:https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config


ac8c81948202ec3cc3a91aca355b72b7_b59b028c719b453dc92306506f908b03.png


3.3 多环境开发控制


Maven与SpringBoot多环境兼容(步骤)


①:Maven中设置多环境属性


<profiles>
    <profile>
        <id>dev_env</id>
        <properties>
            <profile.active>dev</profile.active>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>pro_env</id>
        <properties>
            <profile.active>pro</profile.active>
        </properties>
    </profile>
    <profile>
        <id>test_env</id>
        <properties>
            <profile.active>test</profile.active>
        </properties>
    </profile>
</profiles>



②:SpringBoot中引用Maven属性


469e62bcdf4a272f5f1bea1a927d93ac_6291ca660804cf9a2f4ac94a985b695d.png


③:执行Maven打包指令


Maven指令执行完毕后,生成了对应的包,其中类参与编译,但是配置文件并没有编译,而是复制到包中


ac9428568a75637292dcb25cf84f92c9_0741626af99e2dcf567e54bdc61425c2.png


解决思路:对于源码中非java类的操作要求加载Maven对应的属性,解析${}占位符

④:对资源文件开启对默认占位符的解析


<build>
    <plugins>
        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <configuration>
                <encoding>utf-8</encoding>
                <useDefaultDelimiters>true</useDefaultDelimiters>
            </configuration>
        </plugin>
    </plugins>
</build>


Maven打包加载到属性,打包顺利通过


1e8e98e67b292a0d506057f1ece20c6a_4bd9a73f693a6d30fde3fd131129ac00.png


4. 配置文件分类


问题导入

SpringBoot的配置文件可以放在项目的哪些地方?


17345156936c93a28e7296f057b4d4d9_a81aef3d0152850fcd0f6f445fcee1e8.png


java –jar springboot.jar --spring.profiles.active=test --server.port=85 --server.servlet.context-path=/heima --server.tomcat.connection-timeout=-1 ... ...

1

SpringBoot中4级配置文件


1级: file :config/application.yml 【最高】


2级: file :application.yml


3级:classpath:config/application.yml


4级:classpath:application.yml 【最低】


作用:


1级与2级留做系统打包后设置通用属性


3级与4级用于系统开发阶段设置通用属性

相关文章
|
9月前
|
Java Unix 调度
springboot快速整合任务
springboot快速整合任务
|
2月前
|
Java 程序员 应用服务中间件
Springboot整合Thmeleaf
Springboot整合Thmeleaf
|
2月前
|
Java
SpringBoot使用汇总
SpringBoot使用汇总
|
2月前
|
Java 前端开发 Maven
SpringBoot - WebJars
SpringBoot - WebJars
41 0
SpringBoot - WebJars
|
10月前
|
XML Java 数据库连接
89.【SpringBoot-02】(三)
89.【SpringBoot-02】
37 0
|
10月前
|
Java 数据库 数据安全/隐私保护
89.【SpringBoot-02】(八)
89.【SpringBoot-02】
27 0
|
10月前
|
前端开发 Java 应用服务中间件
87.【SpringBoot-01】(八)
87.【SpringBoot-01】
65 0
|
11月前
|
XML 运维 安全
springboot
springboot
88 0
|
XML 运维 Java
springboot实用配置
(一)打包与运行 SpringBoot项目快速启动(Linux版) 基于Linux (CenteroS7) 安装JDK,且版本不低于打包时使用的JDK版本 安装包保存在/usr/local/自定义目录中或$HOME下 其他操作参照windows版进行
|
Java 应用服务中间件
SpringBoot(二)
SpringBoot(二)
118 0
SpringBoot(二)