Spring Boot 实例解析:配置文件
-
SpringBoot 的热部署:
- Spring 为开发者提供了一个名为 spring-boot-devtools 的模块来使用 SpringBoot 应用支持热部署,提高开发者的效率,无需手动重启 SpringBoot 应用
- 引入依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> - 修改 Java 代码或者配置文件模板后可以通过 Ctrl + F9 来实现热部署
-
配置文件:
- SpringBoot 使用一个全局的配置文件,配置文件名是固定的
- application.properties
- application.yml
- 配置文件的作用:修改 SpringBoot 自动装配的默认值,SpringBoot 在底层都给自动配置好
- 标记语言:
- 以前的配置文件:大多都是 xx.xml 文件
- YAML:以数据为中心,比 json、xml 更适合做配置文件
- 例如:

- SpringBoot 使用一个全局的配置文件,配置文件名是固定的
-
YAML 语法:
- 基本语法:
- K:(空格) V:表示一对键值对(空格必须有)
- 只要是左对齐的一列数据,都是同一个层级的
- 属性和值也是大小写敏感:

- 值的写法:
- 字面量:普通的值(数字、字符串、布尔)
- K:V:字面量直接来写
- 字符串默认不用加上单引号或双引号
- " ":双引号,不会转义字符串里面的特殊字符,特殊字符会作为本身想表示的意思:
- 例如:name:"zhangsan \n lisi" ==输出==> zhangsan 换行 lisi
- ' ':单引号,会转义特殊字符,特殊字符最终只是一个普通的字符串数据
- 例如:name:'zhangsan \n lisi' ==输出==> zhangsan \n lisi
- 基本语法:
-
对象、Map(属性和值):
- K:V:在下一行来写对象的属性和值的关系,注意缩进
- 对象:key:value 方式

- 数组:用 - 表示数组中的一个元素

-
配置文件注入:
- 配置文件:
person:laseName: helloage: 18boss: falsebirth: 2019-09-09maps: {k1:v1,k2:v2}lists: - lisi- zhaoliiudog: name: 小狗age: 12 - JavaBean:
@Component @ConfigurationProperties(prefix = "person") public class Person {private String laseName;private Integer age;private Boolean boss;private Date birth;private Map<String, Object> maps;private List<Object> lists;private Dog dog; } - 导入文件处理器:
<!‐‐导入配置文件处理器,配置文件进行绑定就会有提示‐‐> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring‐boot‐configuration‐processor</artifactId><optional>true</optional> </dependency> - properties 配置文件在 IDEA 中默认 UTF-8 乱码问题:

- @Value 获取值和@ConfigurationProperties 获取值比较:
- 松散绑定:大小写区别,@ConfigurationProperties 会自动找到驼峰命名法的哪个字段 ==> @Value 注解不支持自动寻找
- SqEL:@Value 注解中可以使用 #{} 和 ${} 进行赋值,而 @ConfigurationProperties 不支持这样赋值
- JSR303 数据校验:例如 @Emile 注解
- 在 @ConfigurationProperties 中加入这个注解,在配置文件中相对应的形式应给为 Emile 形式,否则会报错
- 在 @Value 注解注入值使用这个数据校验注解是无效的
- 复杂数据封装:
- @Value 注解不支持除基本数据类型以外类型封装,而 @ConfigurationProperties 注解支持复杂数据封装

- @Value 注解不支持除基本数据类型以外类型封装,而 @ConfigurationProperties 注解支持复杂数据封装
- 在某个业务中获取一个配置文件中的某个值,使用 @Value 注解
- 编写一个 JavaBean 来和配置文件进行映射,直接使用 @ConfigurationProperties 注解
- 配置文件:
spring.application.name=S45SpringBootDemoApplicationTestsperson.email=kkkk person.hello=lucky person.last-name=张三 person.birth=2017/2/4 person.age=19 person.boss=true person.list="dog,cat,animal" person.maps.key1=value1 person.maps.key2=value2 person.dog.name=${person.hello}_dog person.dog.age=12 - @Value 注解:注入值数据校验
- 注意:@Value 注解不能注入复杂属性(对象,集合等)
@Conponent @Validated //加入校验方式 public class Person {//传入的值必须是邮箱格式,否则会报错@Emailprivate String email;private String hello;//${} : 为取值和 application.properties 配置文件中字段一样的值@Value("${person.last-name}")private String lastName;//#{} : 可以写表达式@Value("#{3*2}")private Integer age;//@Value 注解也可以直接赋值@Value("true")private boolean boss;//@Value注解不能注入复杂属性private Date birth;private Map<String,String> maps;private List<String> list;//set get 方法}
- 注意:@Value 注解不能注入复杂属性(对象,集合等)
- @ConfigurationProperties 注解映射注入属性:
- 注意:容器中的组件才能使用该注解
@Component //将本类中的所有属性和配置文件中 person2 下面的所有属性进行映射 @ConfigurationProperties(prefix = "person2") @Validated //校验注解 public class Person2 {String email;String hello;String lastName;int age;boolean boss;Date birth;Map<String,String> maps;List<String> list;Dog dog; }
- 注意:容器中的组件才能使用该注解
- 导入配置文件处理器:
<!‐‐导入配置文件处理器,配置文件进行绑定就会有提示‐‐> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring‐boot‐configuration‐processor</artifactId><optional>true</optional> </dependency>
- 配置文件:
-
@PropertySource & @ImportResource & @Bean:
- @PropertySource:加载指定的配置文件
//@PropertySource:加载指定配置文件 @PropertySource(value={"classpath:person2.properties"}) @Component //将本类中的所有属性和配置文件中 person2 下面的所有属性进行映射 @ConfigurationProperties(prefix = "person2") public class Person2 {String email;String hello;String lastName;int age;boolean boss;Date birth;Map<String,String> maps;List<String> list;Dog dog; } - @ImportResource:导入 Spring 的配置文件,让配置文件里面的内容生效
- SpringBoot 里面没有 Spring 的配置文件,我们自己编写的配置文件也不能自动识别
- 编写 applicationContext.xml 文件:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="personservice" class="com.example.springbootdemo.Service.impl.Person2ServiceImpl"></bean> </beans> - 导入 Spring 的配置让其生效:

- 配置类注入测试:
@RunWith(SpringRunner.class) @SpringBootTest public class TxDemo3ApplicationTests {//注入对象@AutowiredApplicationContext applicationContext;@Testpublic void contextLoads01() {System.out.println(applicationContext.getBean("personservice"));} }
- @Bean:给容器中添加组件
- 配置类 @Configuration ==> 配置文件
- 使用 @Bean 给容器中添加组件
//@Configuration:标明当前是一个配置类,代替之前的 Spring 配置文件 @Configuration public class MyAppConfig {//将方法返回的值添加到容器当中,当前组件默认 ID 为当前文件名//@Bean注解给容器中添加组件@Beanpublic HelloService HelloService01(){System.out.println("配置类 @Bean 给容器中添加了组件");return new HelloServiceImpl();} }
- @PropertySource:加载指定的配置文件
相关文章:
Spring Boot 实例解析:配置文件
SpringBoot 的热部署: Spring 为开发者提供了一个名为 spring-boot-devtools 的模块来使用 SpringBoot 应用支持热部署,提高开发者的效率,无需手动重启 SpringBoot 应用引入依赖: <dependency> <groupId>org.springfr…...
pytorch图神经网络处理图结构数据
人工智能例子汇总:AI常见的算法和例子-CSDN博客 图神经网络(Graph Neural Networks,GNNs)是一类能够处理图结构数据的深度学习模型。图结构数据由节点(vertices)和边(edges)组成&a…...
计算机网络一点事(23)
传输层 端口作用:标识主机特定进程,TCP,UDP协议 端口号分类:服务器:0-1023,熟知 1024-49151 登记 客户端:49152-65535 功能:实现端到端,进程到进程的通信,…...
(9)下:学习与验证 linux 里的 epoll 对象里的 EPOLLIN、 EPOLLHUP 与 EPOLLRDHUP 的不同。小例子的实验
(4)本实验代码的蓝本,是伊圣雨老师里的课本里的代码,略加改动而来的。 以下是 服务器端的代码: 每当收到客户端的报文时,就测试一下对应的 epoll 事件里的事件标志,不读取报文内容,…...
DeepSeek-R1模型1.5b、7b、8b、14b、32b、70b和671b有啥区别?
deepseek-r1的1.5b、7b、8b、14b、32b、70b和671b有啥区别?码笔记mabiji.com分享:1.5B、7B、8B、14B、32B、70B是蒸馏后的小模型,671B是基础大模型,它们的区别主要体现在参数规模、模型容量、性能表现、准确性、训练成本、推理成本…...
一、html笔记
(一)前端概述 1、定义 前端是Web应用程序的前台部分,运行在PC端、移动端等浏览器上,展现给用户浏览的网页。通过HTML、CSS、JavaScript等技术实现,是用户能够直接看到和操作的界面部分。上网就是下载html文档,浏览器是一个解释器,运行从服务器下载的html文件,解析html、…...
AI大模型开发原理篇-2:语言模型雏形之词袋模型
基本概念 词袋模型(Bag of Words,简称 BOW)是自然语言处理和信息检索等领域中一种简单而常用的文本表示方法,它将文本看作是一组单词的集合,并忽略文本中的语法、词序等信息,仅关注每个词的出现频率。 文本…...
基于微信小程序的实习记录系统设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
【LLM】DeepSeek-R1-Distill-Qwen-7B部署和open webui
note DeepSeek-R1-Distill-Qwen-7B 的测试效果很惊艳,CoT 过程可圈可点,25 年应该值得探索更多端侧的硬件机会。 文章目录 note一、下载 Ollama二、下载 Docker三、下载模型四、部署 open webui 一、下载 Ollama 访问 Ollama 的官方网站 https://ollam…...
【Elasticsearch】 Intervals Query
Elasticsearch Intervals Query 返回基于匹配术语的顺序和接近度的文档。 intervals 查询使用 匹配规则,这些规则由一小组定义构建而成。这些规则然后应用于指定 field 中的术语。 这些定义生成覆盖文本中术语的最小间隔序列。这些间隔可以进一步由父源组合和过滤…...
DeepSeek技术深度解析:从不同技术角度的全面探讨
DeepSeek技术深度解析:从不同技术角度的全面探讨 引言 DeepSeek是一个集成了多种先进技术的平台,旨在通过深度学习和其他前沿技术来解决复杂的问题。本文将从算法、架构、数据处理以及应用等不同技术角度对DeepSeek进行详细分析。 一、算法层面 深度学…...
Docker 部署 Starrocks 教程
Docker 部署 Starrocks 教程 StarRocks 是一款高性能的分布式分析型数据库,主要用于 OLAP(在线分析处理)场景。它最初是由百度的开源团队开发的,旨在为大数据分析提供一个高效、低延迟的解决方案。StarRocks 支持实时数据分析&am…...
【LLM-agent】(task6)构建教程编写智能体
note 构建教程编写智能体 文章目录 note一、功能需求二、相关代码(1)定义生成教程的目录 Action 类(2)定义生成教程内容的 Action 类(3)定义教程编写智能体(4)交互式操作调用教程编…...
29.Word:公司本财年的年度报告【13】
目录 NO1.2.3.4 NO5.6.7 NO8.9.10 NO1.2.3.4 另存为F12:考生文件夹:Word.docx选中绿色标记的标题文本→样式对话框→单击右键→点击样式对话框→单击右键→修改→所有脚本→颜色/字体/名称→边框:0.5磅、黑色、单线条:点…...
14 2D矩形模块( rect.rs)
一、 rect.rs源码 // Copyright 2013 The Servo Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution. // // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or // http://www.apache.org/licenses/LICENS…...
【Unity3D】实现2D角色/怪物死亡消散粒子效果
核心:这是一个Unity粒子系统自带的一种功能,可将粒子生成控制在一个Texture图片网格范围内,并且粒子颜色会自动采样图片的像素点颜色,之后则是粒子编辑出消散效果。 Particle System1物体(爆发式随机速度扩散10000个粒…...
Linux - 进程间通信(3)
目录 3、解决遗留BUG -- 边关闭信道边回收进程 1)解决方案 2)两种方法相比较 4、命名管道 1)理解命名管道 2)创建命名管道 a. 命令行指令 b. 系统调用方法 3)代码实现命名管道 构建类进行封装命名管道&#…...
3、C#基于.net framework的应用开发实战编程 - 实现(三、三) - 编程手把手系列文章...
三、 实现; 三.三、编写应用程序; 此文主要是实现应用的主要编码工作。 1、 分层; 此例子主要分为UI、Helper、DAL等层。UI负责便签的界面显示;Helper主要是链接UI和数据库操作的中间层;DAL为对数据库的操…...
C++编程语言:抽象机制:泛型编程(Bjarne Stroustrup)
泛型编程(Generic Programming) 目录 24.1 引言(Introduction) 24.2 算法和(通用性的)提升(Algorithms and Lifting) 24.3 概念(此指模板参数的插件)(Concepts) 24.3.1 发现插件集(Discovering a Concept) 24.3.2 概念与约束(Concepts and Constraints) 24.4 具体化…...
Python面试宝典13 | Python 变量作用域,从入门到精通
今天,我们来深入探讨一下 Python 中一个非常重要的概念——变量作用域。理解变量作用域对于编写清晰、可维护、无 bug 的代码至关重要。 什么是变量作用域? 简单来说,变量作用域就是指一个变量在程序中可以被访问的范围。Python 中有四种作…...
避开理论深坑:给开发者的机器学习实用入门指南(附周志华《机器学习》高效阅读路线)
避开理论深坑:给开发者的机器学习实用入门指南 作为一名开发者,你可能已经意识到机器学习正在改变我们解决问题的方式。从推荐系统到图像识别,从自然语言处理到预测分析,机器学习正在成为现代软件开发不可或缺的一部分。但当你翻开…...
Ostrakon-VL扫描终端实战教程:像素特工式零售图像识别部署指南
Ostrakon-VL扫描终端实战教程:像素特工式零售图像识别部署指南 1. 像素特工终端介绍 想象你是一位未来世界的零售侦探,手持高科技扫描仪在商店里穿梭。Ostrakon-VL扫描终端就是你的数字助手,它能帮你"看"懂货架上的每一个细节。这…...
解锁知识:9种突破信息壁垒的创新方案
解锁知识:9种突破信息壁垒的创新方案 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息爆炸的数字时代,高效的"信息获取"与"资源解锁"…...
DeerFlow惊艳案例:AI深度研究助理生成的报告和播客效果实测
DeerFlow惊艳案例:AI深度研究助理生成的报告和播客效果实测 1. 引言:当AI成为你的研究伙伴 想象一下,你正在为一个复杂的市场分析项目焦头烂额,需要快速整理一份包含最新数据、行业趋势和竞争格局的深度报告。传统方式下&#x…...
Phi-4-mini-reasoning部署教程:容器化打包(Dockerfile)+ NVIDIA Container Toolkit
Phi-4-mini-reasoning部署教程:容器化打包(Dockerfile) NVIDIA Container Toolkit 1. 项目概述 Phi-4-mini-reasoning是微软推出的3.8B参数轻量级开源模型,专为数学推理、逻辑推导、多步解题等强逻辑任务设计。这款模型主打&quo…...
python基于Hadoop的就业推荐系统的设计与实现 Spark+Hadoop+Hive 大数据 深度学习 机器学习
前言随着就业市场信息不对称问题日益突出,开发高效的智能就业推荐系统 成为当务之急。本研究基于Hadoop生态系统,设计并实现了一套面向求职者和招聘企业的智能推荐系统。系统采用分布式架构,后端基于Django框架实现业务逻辑处理,前…...
万物识别镜像高级功能探索:除了基础识别,还能做什么?
万物识别镜像高级功能探索:除了基础识别,还能做什么? 1. 万物识别镜像的隐藏潜力 大多数人使用万物识别镜像时,只停留在基础识别功能上——上传图片,获取识别结果。但这款基于cv_resnest101_general_recognition算法…...
远程协助工具
# 详见:https://mp.weixin.qq.com/s/sY-KrOqpY3C1JUeiELEJNw # 来源:https://chat.qwen.ai/# ToDesk https://www.todesk.com/# 向日葵 https://sunlogin.oray.com/# TeamViewer https://www.teamviewer.com/# AnyDesk https://anydesk.com/ https://any…...
Qwen3.5-9B-AWQ-4bit惊艳图文效果:多张测试图主体识别与语义概括对比展示
Qwen3.5-9B-AWQ-4bit惊艳图文效果:多张测试图主体识别与语义概括对比展示 1. 模型能力概览 千问3.5-9B-AWQ-4bit是一款支持图像理解的多模态模型,能够结合上传图片与文字提示词,输出中文分析结果。这个量化版本在保持较高精度的同时&#x…...
错位排序算法
首先,让我们理解什么是错位排列:错位排列是指在排列中,任何一个元素都不在自己原来的位置上。比如,对于序列 {1,2,3}{1,2,3},一个错位排列可能是 {3,1,2}{3,1,2},因为 11 不在位置 11 上,22 不在…...
