竞价推广年终总结/旅游seo整站优化
Spring Boot 中的外部化配置
- 一、配置文件基础
- 1.配置文件格式
- (1)YAML 基本语法规则
- (2)YAML 支持三种数据结构
- 2.application 文件
- 3.application.properties 配置文件
- 4.application.yml 配置文件
- 5.Environment
- 6.组织多文件
- 7.多环境配置
- 二、绑定 Bean
- 1.多个简单的属性绑定
- 2.嵌套 Bean
- 3.扫描注解
- 4.处理第三方库对象
- 5.集合 Map、List 以及 Array
- 6.指定数据源文件
- 三、总结
- 1.@Value:用于绑定单个属性
- 2.绑定Bean:用于多个属性。
- 应用程序 = 代码 + 数据(数据库,文件,url)
- 应用程序的配置文件:Spring Boot 允许在代码之外,提供应用程序运行的数据,以便在不同的环境中使用相同的应用程序代码。避免硬编码,提供系统的灵活性。可使用各种外部配置源,包括 Java 属性文件、YAML 文件、 环境变量和命令行参数。
- 项目中经常使用 properties 与 yaml 文件,其次是命令行参数。
一、配置文件基础
1.配置文件格式
- 配置文件有两种格式:properties 和 yaml(yml)。
- properties 是 Java 中常用的一种配置文件格式,key=value。key 是唯一的,文件扩展名为 properties。
- 关于 properties 文件格式的相关知识详见我的博客 ===> properties 属性配置文件
- yaml(YAML,Ain’t Markup Language)也叫做 yml,是一种配置文件的数据格式,基本的语法 key:[这里必须有一个空格]值。yml文件的文件扩展名是 yaml 或 yml(常用)。
- properties 是 Java 中常用的一种配置文件格式,key=value。key 是唯一的,文件扩展名为 properties。
(1)YAML 基本语法规则
- 大小写敏感
- 使用缩进表示层级关系
- 缩进可以使用空格,不允许使用 Tab 键
- 缩进的空格数目不重要,相同层级的元素左侧对齐即可
- # 字符表示注释,只支持单行注释。# 放在注释行的第一个字符
- 总结:YAML 缩进必须使用空格,而且区分大小写,建议编写 YAML 文件只用小写和空格。
(2)YAML 支持三种数据结构
- 对象:键值对的集合,又称为映射(mapping)/哈希(hashes)/字典(dictionary)
#Map<String, User> users
users:user1:name: 张三age: 20sex: 男user2:name: 李四age: 22sex: 男
- 数组:一组按次序排列的值,又称序列(sequence)/列表(list)
#集合以及数组
#List<Login> logins
logins:- login1:username: zhangsanpassword: 123456- login2: username: wangwupassword: 654321
#String[] names
names:- lisi- zhangsan
- 标量(scalars):单个的,不可再分的值,例如数字、字符串、true|false 等
# 标量
security:username: zhangsanpassword: 123456
- 注意:
- “-” 表示集合的一个成员,因为成员是对象,需要属性名称指定属性值。
- LIst 和 数组前面加入 “-” 表示一个成员。
- Map 直接指定 key 和 value,无需 “-”。
2.application 文件
- Spring Boot 同时支持 properties 和 yaml 格式的配置文件。配置文件名称默认是 application。我们可以使用 application.properties ,application.yaml。
- 读取配置文件的 key 值,注入到 Bean 的属性可用@Value,@Value 一次注入一个 key 值。将多个 key 值绑定到 Bean 的多个属性用到 @ConfiguraionProperties 注解。 在代码中访问属性除了注解,Spring 提供了外部化配置的抽象对象 Environment。Environment 包含了几乎所有外部配置文件、环境变量,命令行参数的所有 key 和 value。需要使用 Environment 的注入此对象吗,调用它的方法 getProperty(String key) 方法即可。
- 注意:
- Spring Boot 建议使用一种格式的配置文件,如果 properties 和 yml 都存在。properties 文件优先。推荐使用 yml 文件。
- application 配置文件的名称和位置都可以修改。约定名称为 application,位置在 resource 目录下。
3.application.properties 配置文件
- 注解 @Value的语法格式:@Value(${“key:默认值”})
4.application.yml 配置文件
5.Environment
- Environment 是外部化的抽象,是众多数据来源的集合。从中可以读取 application配置文件,环境变量,系统属性。使用方式 在 Bean 中注入 Environment。调用它的 getProperty(String key) 方法。
6.组织多文件
- 大型集成的第三方框架,中间件比较多。每个框架的配置细节相对复杂。如果都将配置集中到一个 application 文件中,导致文件内容多,不易阅读。我们为每个框架建立一个独立的配置文件,最后将多个文件集中到 application 文件中。我们使用导入文件的功能。
- 导入文件的语法: spring.config.import: conf/db.yml, conf/redis.yml
- 导入多个配置文件,“,”作为分隔符。
- 导入多个配置文件,“,”作为分隔符。
7.多环境配置
- 在软件开发中环境的概念:影响软件运行的配置就叫做环境。例如应用访问数据库的 ip,用户名和密码,Rides 的端口,配置文件的路径,操作系统,服务器等。围绕着程序周围的都是环境。环境影响软件的运行。
- Spring Profiles 表示环境,Profiles 有助于隔离应用程序配置,并使它们仅在某些环境中可用。常说开发环境、测试环境、生产环境等。一个环境就是一组相关的配置数据,支撑我们的应用在这些配置下运行。应用程序启动时指定适合的环境。
- Spring Boot 规定环境文件的名称 application-{profile}.properties(yml)。其中 profile 为自定义的环境名称。profile是可以自定义的,但是一般推荐如下命名:
- dev 表示开发。
- test 表示测试。
- prod 表示生产。
- feature 表示特性。
- Spring Boot 会加载 application 以及 application-{profile} 两类文件,不是单独加载 application-{profile}。
- **在application-{profile}中设置环境名的语法:**spring.config.activate.on-profile: dev
- 在application中激活环境的语法: spring.profiles.active: dev
二、绑定 Bean
- @Value 绑定单个属性,当属性较多时不方便,Spring Boot 提供了另一种。将多个配置项绑定到 Bean 的属性,提供强类型的 Bean。Bean 能够访问到配置数据。
- 基本原则:标准的 JavaBean 有无参数构造方法,包含属性的访问器。配合 @ConfigurationProperties 注解一起使用。Bean 的 static 属性不支持。
- Spring Boot 自动配置中大量使用了绑定 Bean 与 @ConfigurationProperties,提供对框架的定制参数。项目中要使用的数据如果是可变的,推荐在 yml 或 properties 中提供。项目代码具有较大的灵活性。
- @ConfigurationProperties 能够配置多个简单类型的属性,同时支持 Map、List、数组类型。对属性还能验证基本格式。
1.多个简单的属性绑定
- @ConfigurationProperties 声明在类上,表示绑定属性到此类。prefix 表示前缀,是配置文件中多个 key 的公共前缀。这些 key 以 “.” 作为分隔符。例如 app.name,app: name等。prefix=“app”,将文件中 app 开始的 key 都找到,调用与 key 相同名称的 setxxx 方法。如果有给属性赋值成功。没有的忽略。
2.嵌套 Bean
3.扫描注解
- @ConfigurationProperties 注解起作用,还需要@EnableConfigurationProperties 或@ConfigurationPropertiesScan。这两个注解是专门寻找@ConfigurationProperties注解的,将他的对象注入到 Spring 容器。在启动类上使用扫描注解。
- @EnableConfigurationProperties 适用于比较零散的类的情况。
- @ConfigurationPropertiesScan 适用于整个的包扫描
4.处理第三方库对象
- 如果某个类需要在配置文件中提供数据,但是没有源代码。此时 @ConfigurationProperties 结合 @Bean 在方法上一起使用。
- 例如下面假如 AppConfiguration 类是第三方库中的类:
5.集合 Map、List 以及 Array
6.指定数据源文件
- application 做配置是经常使用的,除此以外我们能够指定某个文件作为数据源。@PropertiesSource 是主力,用以加载指定的 properties 文件。@Properties 与 @Configuration 一同使用,其他注解还有 #Value,@ConfigurationProperties。
三、总结
1.@Value:用于绑定单个属性
- 读取数据:@Value(“${key:defalutValue}”),使用 Environment.getProperties(“key”, “defalutValue”) 获取的是单个值(String,int,long,float,double等)
2.绑定Bean:用于多个属性。
- 注解:@ConfigurationProperties
- 位置:
- ① 在类的上面,需要有源代码。
- ② 方法上面,使用第三方对象。配合 @Bean 注解。
- 位置:
- 数据来源 application 文件(properties 或 yml)
- 指定数据来源 @PropertiesSource(value = “classpath:/xxxx.properties”)
- 注意:
- ① 类中有无参数构造方法。
- ② 属性有 setxxxx 方法。
- ③ static 属性无效。
- ④ 使用 bean 的构造方法也能创建对象,无需 set 方法。
- @ ConfigurationProperties 使用需要配合其他注解:
- @Configuration
- @EnableConfigurationProperties
- @ConfigurationPropertiesScan
- @Bean
- 配置文件 application 名称和位置都是可以改变的。
- application配置文件的位置:
- 项目的根目录下
- 项目根目录的 /config目录
- resources/config
- resources目录
相关文章:

Spring Boot 中的外部化配置
Spring Boot 中的外部化配置 一、配置文件基础1.配置文件格式(1)YAML 基本语法规则(2)YAML 支持三种数据结构 2.application 文件3.application.properties 配置文件4.application.yml 配置文件5.Environment6.组织多文件7.多环境…...

10个常考的前端手写题,你全都会吗?(下)
前言 📫 大家好,我是南木元元,热爱技术和分享,欢迎大家交流,一起学习进步! 🍅 个人主页:南木元元 今天接着上篇再来分享一下10个常见的JavaScript手写功能。 目录 1.实现继承 ES5继…...

Java 面试题库
基础篇 面向对象的特征 封装(Encapsulation): 封装是指将对象的数据(属性)和行为(方法)结合在一起,形成一个独立的实体。对象的数据被隐藏在内部,只能通过定义好的接口&…...

仿真机器人-深度学习CV和激光雷达感知(项目2)day6【数学基础-坐标变换】
文章目录 前言坐标变换的作用旋转与平移二维变换旋转平移推广到三维齐次坐标问题引入定义用法变换矩阵旋转的其他表示方法*前言 💫你好,我是辰chen,本文旨在准备考研复试或就业 💫本文内容是我为复试准备的第二个项目 💫欢迎大家的关注,我的博客主要关注于考研408以及…...

Android下载gradle失败解决方法
1、在gradle-wrapper.properties文件中查看自己需要下载gradle什么版本的包和zip路径(wrapper/dists)。 2、在setting中查看Gradle的保存路径,如下图:C:/Users/Administrator/.gradle,加上第一步的zip路径得到下载grad…...

C#,最小生成树(MST)克鲁斯卡尔(Kruskal)算法的源代码
一、Kruskal算法简史 克鲁斯卡尔(Kruskal)算法是一种用来寻找最小生成树的算法,由Joseph Kruskal在1956年发表。用来解决同样问题的还有Prim算法和Boruvka算法等。三种算法都是贪婪算法的应用。和Boruvka算法不同的地方是,Kruska…...

Oracle篇—参数文件在11gRAC或12cRAC的启动位置介绍
☘️博主介绍☘️: ✨又是一天没白过,我是奈斯,DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux,也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注❣…...

scrapy pipelines
1.时间的处理 获取当前时间的字符串 # 创建一个datetime对象并设置为当前时间,该时间少8小时 dt datetime.datetime.now() # 将datetime转换为本地时区 local_tz pytz.timezone(Asia/Shanghai) local_dt local_tz.localize(dt) # 将datetime对象格式化为ISO 86…...

element-ui 打包流程源码解析——babel 相关
目录 1,babel-cli2,babel-core3,.babelrc3.1,presets3.2,plugins其他相关 该文章是为了更好的理解:element-ui 打包流程源码解析(上) 第2.5节 npm run build:utils 打包命令 "…...

听神经瘤的听力学表现
听神经瘤的听力学诊断 听神经瘤的听力学表型多样,听力正常者不能排除听神经瘤;听力损失程度不能预判肿瘤大小;纯音测听与言语识别率不一致应警惕蜗后病变;听性脑干诱发电位诊断听神经瘤敏感度随肿瘤增大而增加。 一.纯…...

C#用DateTime.Now静态属性返回日期的星期信息
目录 一、使用的方法 1.Now属性 2.ToString方法 二、示例 使用DateTime结构的Now静态属性,可以方便地获取系统日期信息。调用时间对象的ToString方法,在该方法的参数中添加适当的格式化字符串,将返回日期的星期信息。 一、使用的方法 1…...

ARMv8-AArch64 的异常处理模型详解之异常类型 Exception types
异常类型详解 Exception types 一, 什么是异常二,同步异常(synchronous exceptions)2.1 无效的指令和陷阱异常(Invalid instructions and trap exceptions)2.2 内存访问产生的异常2.3 产生异常的指令2.4 调…...

Linux操作系统概念
绪论: “心灵纯洁的人,生活充满甜蜜和喜悦。——列夫托尔斯泰”,本章的主要内容是介绍了硬件的组成结构冯诺依曼体系结构以及操作系统的概念和操作系统的作用,本章的内容主要是理论他起到承上启下的作用只有理解了操作系统的运行…...

Speech | 人工智能中关于语音务必需要了解的基础知识(信号处理)及代码
语音是指人们讲话时发出的话语,是一种人们进行信息交流的声音,是由一连串的音组成语言的声音,我们可以理解为语音(speech)声音(acoustic)语言(language)。 目录 0.声音的基本属性 0.1.音高(pitch) 0.2.音量(Volume) 0.3.音色(Timbre) 0…...

c# 单例模式实现
方式一: 在C#中,可以使用单例模式来确保一个类只有一个实例,并提供一个全局访问点。 public class Singleton {private static Singleton instance;private static readonly object lockObject new object();private Singleton(){// 私有构…...

万字长文详解Java线程池面试题
王有志,一个分享硬核 Java 技术的互金摸鱼侠 加入 Java 人的提桶跑路群:共同富裕的Java人 今天是《面霸的自我修养》第 6 篇文章,我们一起来看看面试中会问到哪些关于线程池的问题吧。数据来源: 大部分来自于各机构(J…...

【jQuery入门】链式编程、修改css、类操作和className的区别
文章目录 前言一、链式编程二、修改css2.1 获取css的值2.2 设置单个css属性2.3 设置类样式添加类移除类切换类 三、类操作与className的区别总结 前言 jQuery是一个流行的JavaScript库,广泛用于简化DOM操作和处理事件。在jQuery中,链式编程是一种强大的…...

使用的uview 微信高版本 头像昵称填写能力
<template><view><button class"cu-btn block bg-blue margin-tb-sm lg" tap"wxGetUserInfo">一键登录</button><view><!-- 提示窗示例 --><u-popup :show"show" background-color"#fff">&…...

Hadoop3完全分布式搭建
一、第一台的操作搭建 修改主机名 使用hostnamectl set-hostname 修改当前主机名 关闭防火墙和SELlinux 1,使用 systemctl stop firewalld systemctl disable firewalld 关闭防火墙 2,使用 vim /etc/selinux/config 修改为 SELINUXdisabled 使用N…...

中断——外部中断EXIT
前期疑问:中断可以分成外部中断和内部中断吗 文章目录 前言一、中断知识二、中断编程三、EXIT外部中断/事件控制器 3.1 中断事件线3.2 EXTI初始化结构体详解 四、软件设计 4.1 编程要点 五、代码回顾实现六、补充中断知识总结 前言 野火中断章节有这样一句话 【F…...

Kafka-服务端-副本机制
Kafka从0.8版本开始引入副本(Replica)的机制,其目的是为了增加Kafka集群的高可用性。 Kafka实现副本机制之后,每个分区可以有多个副本,并且会从其副本集合(Assigned Replica,AR)中选出一个副本作为Leader副本,所有的读写请求都由…...

银行数据仓库体系实践(4)--数据抽取和加载
1、ETL和ELT ETL是Extract、Transfrom、Load即抽取、转换、加载三个英文单词首字母的集合: E:抽取,从源系统(Souce)获取数据; T:转换,将源系统获取的数据进行处理加工,比如数据格式转化、数据精…...

云计算入门——Linux 命令行入门
云计算入门——Linux 命令行入门 前些天发现了一个人工智能学习网站,通俗易懂,风趣幽默,最重要的屌图甚多,忍不住分享一下给大家。点击跳转到网站。 介绍 如今,我们许多人都熟悉计算机(台式机和笔记本电…...

自然语言处理(NLP)的发展
自然语言处理的发展 随着深度学习和大数据技术的进步,自然语言处理取得了显著的进步。人们正在研究如何使计算机更好地理解和生成人类语言,以及如何应用NLP技术改善搜索引擎、语音助手、机器翻译等领域。 方向一:技术进步 自然语言处理&…...

让uniapp小程序支持多色图标icon:iconfont-tools-cli
前景: uniapp开发小程序项目时,对于iconfont多色图标无法直接支持;若将多色icon下载引入项目则必须关注包体,若将图标放在oss或者哪里管理,加载又是一个问题,因此大多采用iconfont-tools工具,但…...

丹麦公司注册优势 丹麦公司注册条件 丹麦公司注册注意事项
丹麦公司注册优势 1、开-放的商业环境,拥有公平透明的商业法律和制度。 2、简化的注册流程,无需繁琐的审批程序和复杂的材料准备。 3、全球认可的声誉,有助于提升贵公司的国际形象。 4、该国的政-府在坚持适度紧缩的财政政策,…...

C++PythonC# 三语言OpenCV从零开发(4):视频流读取
文章目录 相关链接视频流读取CCSharpPython 总结 相关链接 C&Python&Csharp in OpenCV 专栏 【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 全套课程(附带课程课件资料课件笔记) OpenCV 教程中文文档|OpenCV中文 OpenCV教程中文文档|W3Csc…...

vue element MessageBox.prompt this.$prompt组件禁止显示右上角关闭按钮,取消按钮,及点击遮罩层关闭
vue element MessageBox.prompt this.$prompt组件禁止或取消显示右上角关闭按钮,取消按钮,及点击遮罩层关闭 实现效果: 实现代码 MessageBox.prompt(请先完成手机号绑定, 系统提示, {confirmButtonText: 提 交,showClose: false,closeOnClic…...

Oracle 日常健康脚本
文章目录 摘要常用脚本 摘要 保持 Oracle 数据库的良好健康状况对于系统的可靠性和性能至关重要。本文将介绍一些常用的 Oracle 日常健康脚本,帮助您监控数据库并及时识别潜在的问题,以保证数据库的稳定运行。 常用脚本 1.查询数据库实例和实例级别的…...

leetcode670最大交换
给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。 示例 1 : 输入: 2736 输出: 7236 解释: 交换数字2和数字7。 示例 2 : 输入: 9973 输出: 9973 解释: 不需要交换。 注意: 给定数字的范围是 [0, 108] int maximumSwap(int num) {…...