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级用于系统开发阶段设置通用属性

相关文章
|
机器学习/深度学习 人工智能 PyTorch
|
10月前
|
存储 编解码 UED
拥抱AVIF:提升网站加载速度的最佳实践,附Zola模板
AVIF(AV1图像文件格式)是一种高效、开源且免版税的图片格式,相比JPG和PNG,在视觉相似的压缩水平下,文件大小可减少50%。它支持有损与无损压缩、动画存储、Alpha通道、HDR及宽色域等特性。2024年起,现代浏览器已全面支持AVIF。通过使用HTML `<picture>`标签,可优先加载AVIF图片,同时兼容WebP格式,提升网站性能与用户体验。本文还分享了在Zola静态网站生成器中实现AVIF支持的方法,大幅降低图片文件体积,优化带宽与流量成本,实现技术升级与用户需求的双赢。
396 0
|
物联网 5G 网络安全
什么是5G技术及其主要目标?
什么是5G技术及其主要目标?
680 1
|
12月前
|
数据采集 人工智能 安全
1000多个智能体组成,AI社会模拟器MATRIX-Gen助力大模型自我进化
在人工智能领域,大型语言模型(LLMs)的发展迅速,但如何提升其指令遵循能力仍是一大挑战。论文提出MATRIX-Gen,一个基于多智能体模拟的AI社会模拟器。MATRIX-Gen通过模拟智能体交互生成多样化的现实场景,不依赖预定义模板,从而合成高质量指令数据。它包括MATRIX模拟器和MATRIX-Gen指令生成器,能生成监督微调、偏好微调及特定领域的数据集。实验表明,使用MATRIX-Gen合成的数据集微调后的模型在多个基准测试中表现出色,显著优于现有方法。然而,该方法也面临智能体和场景规模对数据质量的影响等挑战。
426 33
|
文字识别 数据可视化 项目管理
2024年知识管理软件评测:哪款工具最适合初创团队提升工作效率?
本文评测了8款适合初创企业的知识管理软件,包括板栗看板、Notion、Confluence、Evernote Business、Slack、Miro、Trello和Airtable。这些工具不仅支持高效的团队协作,还具备强大的信息管理功能,帮助企业在快速成长的过程中保持信息的有序和共享。初创企业可根据自身需求选择最适合的工具,提升团队效率。
 2024年知识管理软件评测:哪款工具最适合初创团队提升工作效率?
|
监控 Serverless 网络安全
函数计算操作报错合集之如何解决"access deny"错误
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
391 1
|
前端开发
前端代码简洁之路,后台系统之详情页设计
前端业务开发中,为了脱离舒适区,也为了解放重复功能开发的劳动力,会将一些功能进行改造,本期改造千篇一律的详情页。
4333 26
前端代码简洁之路,后台系统之详情页设计
|
Java Spring
Spring中的表达式语言SpEL详解
Spring中的表达式语言SpEL详解
606 0
|
数据采集 SQL 机器学习/深度学习
Dataphin数据治理系列:基于数据质量管理,支撑业务快速发展
数据质量是数据建设和管理中非常重要的一环。所有的数据应用,不论是用于支持业务开展的数据库,还是用于支持商业决策,或者用于机器学习和人工智能等高级应用,实现数据价值的前提是数据本身是高质量的,是可靠和可信的。
Dataphin数据治理系列:基于数据质量管理,支撑业务快速发展
|
JavaScript 前端开发 算法
JavaScript学习 -- Base64编码
JavaScript学习 -- Base64编码
267 0

热门文章

最新文章