当前位置: 首页 > backend >正文

TYUT-企业级开发教程-第二章

SpringBoot的配置文件

全局配置文件能够对一些默认配置值进行修改。 Spring Boot 默认使用的全局配置文件有
application.properties 和 application.yml , Spring Boot 启动时会自动读取这两个文
件中的配置,如果文件中存在与默认自动配置相同的配置信息,则覆盖默认的配置信息

application.properties

1. 字面量类型属性


如果需要配置的属性为对象的属性,可以通过“对象名 . 属性名”的方式指定属性的键。对象中可能
包含多个属性,在 application.properties 文件中为对象的属性赋值时,一个属性对应一对键值对。

user.username=lisi
user.age=18

 2.数组类型属性
 

在 application.properties 文件中配置数组类型属性时,可以将数组元素的值写在一行内,元素值之
间使用逗号( , )间隔,也可以在多行分别根据索引赋值

 方式一
user.hobby=swim,travel,cook
# 方式二
user.hobby[0]=swim2
user.hobby[1]=travel2
user.hobby[2]=cook2

3.集合类型属性 

List 、 Set 、 Map

# 配置 List: 方式一
user.subject=Chinese,English,Math
# 配置 List: 方式二
user.subject[0]=Chinese
user.subject[1]=English
user.subject[2]=Math
 配置 Set
user.salary=120,230
# 配置 Map 方式一
user.order.1001=cookie
user.order.1002=cake
# 配置 Map 方式二
user.order[1001]=cookie
user.order[1002]=cake

application.yml

支持的数据包括列表、键值对和字符串、数字等

规则:重点

  • 使用缩进表示层级关系。
  •  缩进时不允许使用 Tab 键,只允许使用空格。
  •  缩进的空格数不重要,但同级元素必须左侧对齐
  •  大小写敏感

字面类型配置

# 缩进式
consumer:
username: lisi
age: 18
# 行内式
consumer: {username: lisi,age: 18}

数组类型和单列集合属性

缩进试
consumer:
hobby:
- play
- read
- sleep
行内式
consumer:
hobby: [play,read,sleep]

MAP结合属性

缩进式
consumer:
order:
1001: cookie
1002: cake
行内式
consumer:
order: {1001: cookie,1002: cake}

 有关配置绑定相关的注解

@Value

  @Value 注解是由 Spring 框架提供的, Spring Boot 框架从 Spring 框架中对 @Value 注解进行了
默认继承,通过 @Value 可以将配置文件中的属性绑定到 Bean 对象对应的属性

 yaml
consumer:username: lisiage: 23hobby: sing,read,sleepsubject: 100,150
import org.springframework.stereotype.Component;
import org.springframework.beans.factory.annotation.Value;import java.util.Arrays;
import java.util.List;@Component
public class Consumer {@Value("${consumer.username}")private String username;@Value("${consumer.age}")private int age;@Value("#{'${consumer.hobby}'.split(',')}")private String[] hobby;@Value("${consumer.subject}")private List subject;// 生成getter方法以及toString()方法public String getUsername() {return username;}public int getAge() {return age;}public String[] getHobby() {return hobby;}public List getSubject() {return subject;}@Overridepublic String toString() {return "Consumer{" +"username='" + username + '\'' +", age=" + age +", hobby=" + Arrays.toString(hobby) +", subject=" + subject +'}';}
}

测试类

import com.itheima.domain.Consumer;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
class Chapter02ApplicationTests {@Autowiredprivate Consumer consumer;@Testvoid wiredTest() {System.out.println(consumer);}
}

Environment对象

Environment与@Value对比

使用 @Value 注解时,将该注解标注在 Spring 管控的 Bean 的属性名上方,就可以将某
个数据绑定到 Bean 对象的属性。当 Bean 的属性比较多且这些属性都需要绑定配置的数
据时,操作起来就比较烦琐
。为此, Spring Boot 提供了一个对象 Environment ,项目
启动时能够将配置文件中的所有数据都封装到该对象中,这样就不需要手动对配置数据进
行绑定

@Autowired
private Environment env;
@Test
void evnTest() {
System.out.println("consumer.username="+env.getProperty("consumer.username"));
System.out.println("consumer.age="+env.getProperty("consumer.age"));
System.out.println("consumer.hobby="+env.getProperty("consumer.hobby"));
System.out.println("consumer.subject="+env.getProperty("consumer.subject"));}

@ConfigurationProperties 注解

Java 是面向对象的语言,很多情况下,人们习惯将具有相同特性的一组数据封装到一个对
象 中 , Spring Boot 中 就 提 供 了 这 样 的 注 解 。 Spring Boot 的@ConfigurationProperties 注解可以 可以将配置文件中的一组配置数据同时绑定 到Bean 中

@Component
@ConfigurationProperties(prefix = "consumer")
public class Consumer {
private String username ;
private int age;
private String[] hobby;
private List subject;
//……setter/getter 方法,以及 toString() 方法
}

两个注解的对比


 

 

 定义Profile

在实际开发中,根据项目的开发进度,项目经常需要在不同的部署环境间切换,常见部署
的环境有开发环境、测试环境、生产环境。不同环境使用的配置信息往往不同,而且项目
的配置信息往往有很多,如果每次变更项目部署的环境时,都采用手动方式更改配置信息
会很麻烦。
针对这种情况,在 Spring Boot 中可以使用 Profile 解决这类问题, Profile 使 Spring
Boot 可以针对不同的环境提供不同的配置。在 Spring Boot 中可以将 Profile 配置在单一
文件中和多个文件中,也可以通过 @Profile 注解指定 Bean 的生效环境。

Spring Boot 中可以在配置文件使用 spring.config.activate.on-profile 指定 Profile 的
名 称 , 使 用 spring.profiles.active 指 定 激 活 哪 个 Profile , 如 果 需 要 激 活 多 个
Profile , Profile 名称之间使用逗号间隔即可。
每个 Profile 中的配置信息都对应于一个部署环境,在单一 YAML 文件配置多个 Profile
时,可以通过三个短横线号( --- )将不同的 Profile 分隔开

YAML与Profile是一对多的。


 

 
第二章题目

一、填空题
1.application.properties文件中属性通过  键值对   格式进行设置。 
2.application.yml中配置的属性为数组类型或单列集合时,空格和属性值之间使用 间隔。 
3.@ConfigurationProperties注解的  prefix   属性可以指定绑定配置文件中属性的前缀。 
4.  profile   可以让Spring Boot对不同的环境提供不同配置的功能。 
5.@ConfigurationProperties注解的  prefix   属性可以指定绑定配置文件中属性的前缀。

二、判断题
1.默认情况下,application.properties文件中配置的字符串必须使用单引号或双引号进行修饰。 ( X)

解析:不需要

user.username=lisi
user.age=18

2.YAML配置文件的行内式写法配置单列集合属性,包含属性值的中括号“[]”可以省略。 ( 对)
3.@Value注解支持SpEL表达式进行Bean的属性值注入。(对 ) 


4.@ConfigurationProperties注解进行配置文件属性注入时,不需要设置属性的setter方法。( 错)看上图 @Value注解不需要,@ConfigurationProperties需要
5.在Spring Boot中可以将Profile配置在多个文件中。 ( 对)

三、选择题
1.下列选项中,对于application.yml中配置属性的规则描述错误的是(B)。 
A.使用缩进表示层级关系。
B.可以使用Tab键进行缩进。
C.同级元素必须左侧对齐。
D.大小写敏感。

解析:

规则:重点

  • 使用缩进表示层级关系。
  •  缩进时不允许使用 Tab 键,只允许使用空格。
  •  缩进的空格数不重要,但同级元素必须左侧对齐
  •  大小写敏感

2.下列选项中,对@Value注解的描述错误的是(C)。 
A.Spring Boot框架从Spring框架中对@Value注解进行了默认继承。
B.@Value可以将配置文件中的属性绑定到Bean对象对应的属性。
C.使用@Value注解对属性注入值时,类中必须同时提供属性的getter()和setter()方法。
D.@Value注解对于Map集合的属性注入支持效果不佳。

解析:

@Value注解不需要,@ConfigurationProperties需要

3.下列选项中,对于@ConfigurationProperties注解的描述错误的是(D)。 
A.@ConfigurationProperties注解可以将配置文件中的一组配置数据同时绑定到Bean中。
B.@ConfigurationProperties注解的prefix属性指定绑定配置文件中属性的前缀。
C.实体类中的属性名需要和绑定的配置文件中属性名保持一致。
D.@ConfigurationProperties注解时,也需要在属性上方标注@Value注解。

4.下列选项中,关于在Spring Boot的配置文件中配置Profile的描述错误的是(D)。 
A.可以在配置文件使用 spring.config.activate.on-profile指定Profile的名称。
B.使用spring.profiles.active指定激活哪个Profile。
C.如果需要激活多个Profile,Profile名称之间使用逗号间隔即可。
D.单一YAML文件中只能配置单个Profile。

解析:

每个 Profile 中的配置信息都对应于一个部署环境,在单一 YAML 文件配置多个 Profile
时,可以通过三个短横线号( --- )将不同的 Profile 分隔开

5.下列选项中,在Spring Boot配置文件中用于激活指定Profile的属性是(B)。 
A.spring.config.activate.on-profile    指定名称
B.spring.profiles.active                     指定激活那个
C.server.port                                  
D.spring.application.name               spring启动类名称

解析:

Spring Boot 中可以在配置文件使用 spring.config.activate.on-profile 指定 Profile 的
名 称 , 使 用 spring.profiles.active 指 定 激 活 哪 个 Profile , 如 果 需 要 激 活 多 个
Profile , Profile 名称之间使用逗号间隔即可。

http://www.xdnf.cn/news/7170.html

相关文章:

  • 学习STC51单片机05(芯片为STC89C52RC)
  • 发布时将多个bpl 打包成一个bpl的方法,或者说:不需要vcl60.bpl情况下 18.5K的exe 照常可以运行。
  • deepseek系列论文汇总(时至2025.5)
  • 2023 睿抗机器人开发者大赛CAIP-编程技能赛-高职组(省赛)解题报告 | 珂学家
  • AGI大模型(24):通过LangChain的接口来调用OpenAI对话
  • 【AWS入门】Amazon Bedrock简介
  • Compose笔记(二十四)--Canvas
  • 项目:在线音乐播放服务器——基于SSM框架和mybatis
  • redis持久化和数据淘汰方案
  • NB-IoT技术深度解析:部署模式与节能机制全指南
  • SONiC系统之高速数据遥测High Frequency Telemetry
  • Java中的伪共享(False Sharing):隐藏的性能杀手与高并发优化实战
  • Python训练营---Day29
  • 劳特巴赫trace32自定义调试界面
  • mysql的高可用
  • 基于MCP的AI Agent应用开发实践
  • 类的加载过程详解
  • 如何本地部署Qwen3系列的大小模型235B/32B并进行推理服务及并发测试?
  • 力扣1991:找到数组的中间位置(前缀和)
  • 三、关系数据库
  • leetcode报错原因总结需要背下来的程序片 [更新中]
  • MinIO:从入门到精通,解锁云原生存储的奥秘
  • 程序代码篇---python向http界面发送数据
  • Ubuntu搭建TFTP服务器的方法
  • OpenCL C++图像纹理处理
  • jvm安全点(四)openjdk17 c++源码垃圾回收之安全点轮询页内存设置不可访问
  • 前端图片上传组件实战:从动态销毁Input到全屏预览的全功能实现
  • 备份C#的两个类
  • 【DAY22】 复习日
  • 三、高级攻击工具与框架