您的位置:首页 > 汽车 > 新车 > 西安百度公司_中装建设股吧_个人网站制作源代码_国内新闻最新消息十条

西安百度公司_中装建设股吧_个人网站制作源代码_国内新闻最新消息十条

2025/10/5 18:29:29 来源:https://blog.csdn.net/jlihan/article/details/144776289  浏览:    关键词:西安百度公司_中装建设股吧_个人网站制作源代码_国内新闻最新消息十条
西安百度公司_中装建设股吧_个人网站制作源代码_国内新闻最新消息十条

SpringBoot的配置文件

文章目录

  • SpringBoot的配置文件
    • 1.SpringBoot的热部署
    • 2.配置文件
      • 2.1配置文件的作用
      • 2.2YAML配置文件:
      • 2.3YAML 与 JSON 和 XML 的对比
    • 3.YAML语法
      • 3.1键值对
      • 3.2值的写法
      • 3.3对象、Map(属性和值)(键值对)
      • 3.4数组(List、Set)
    • 4.配置文件值注入
      • 4.1properties配置文件在idea中默认utf-8可能会乱码
      • 4.2@Value获取值和@ConfigurationProperties获取值比较
      • 4.3配置文件值注入
        • 4.3.1邮箱验证
        • 4.3.2@PropertySource&@ImportResource&@Bean
      • 4.4配置文件占位符
        • 4.4.1随机数
        • 4.4.2占位符获取之前配置的值,如果没有可以是用:指定默认值
      • 4.5Profile
        • 4.5.1多Profile文件
        • 4.5.2yml支持多文档块方式
        • 4.5.3激活指定profile
      • 4.6配置文件加载位置


1.SpringBoot的热部署

​ spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。

在pom.xml中引入热部署依赖

		<!-- SpringBoot热部署--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency>

修改java代码或者配置文件模板后可以通过ctrl+f9来实施热部署。

2.配置文件

SpringBoot使用一个全局的配置文件,配置文件名是固定的;

  • application.properties
  • application.yml

2.1配置文件的作用

修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;

2.2YAML配置文件:

YAML 的全称是 YAML Ain’t Markup Language,即“YAML 不是标记语言”。这个名称本身就表达了它与传统的标记语言(如 XML)不同的设计理念。

相较于 XML(标记语言)和 JSON(数据交换格式),YAML 更加关注数据的表示和层次结构,避免了复杂的标记,极大地提高了配置文件的易读性和简洁性。

  • YAML 是数据序列化格式,旨在以简洁、易读的方式表示数据结构。
  • 它通常用于配置文件、数据交换和对象序列化等场景。
  • 它以可读性强为设计目标,强调用户的易读性和书写简洁性。

2.3YAML 与 JSON 和 XML 的对比

特性YAMLJSONXML
可读性非常好,语法简洁,层次分明结构清晰,但需要括号和引号,较冗长较复杂,冗长,包含标记标签
语法简洁性简洁,使用空格和缩进表示层次需要引号、括号、逗号等符号需要大量的标签和属性定义
注释支持支持注释不支持注释支持注释
数据表示能力强,支持多层嵌套和复杂结构强,支持嵌套和数据结构强,支持嵌套和数据结构
文件大小通常较小,文件体积比 JSON 和 XML 小较大,包含括号和逗号等符号较大,包含标签和闭合标记
常见用途配置文件、数据交换数据交换、APIs文档描述、配置文件

image-20241227150943408

3.YAML语法

3.1键值对

  • k:(空格)v:表示一对键值对(空格必须有);
  • 以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的
  • 属性和值也是大小写敏感;

image-20241227153503428

3.2值的写法

  • 字面量:
    • 普通的值(数字,字符串,布尔)
  • 字符串:
    • 默认不用加上单引号或者双引号;
    • “”:双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
    • ‘’:单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
name: "zhangsan \n lisi":输出;zhangsan 换行 lisi
name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi

3.3对象、Map(属性和值)(键值对)

  • k: v:在下一行来写对象的属性和值的关系;注意缩进
  • 对象还是k: v的方式

image-20241227154812739

3.4数组(List、Set)

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

image-20241227153712653

  • 行内写法(推荐)

image-20241227153741496

4.配置文件值注入

image-20241227154910922

image-20241227154919182

image-20241227155005072

我们可以导入配置文件处理器,以后编写配置就有提示了

<!--导入配置文件处理器,配置文件进行绑定就会有提示--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency>
</dependencies>

加入配置文件处理器后的效果

image-20241227155225629

4.1properties配置文件在idea中默认utf-8可能会乱码

image-20241227155338806

4.2@Value获取值和@ConfigurationProperties获取值比较

image-20241227155406055

配置文件yml还是properties他们都能获取到值;

如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;

如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;

松散绑定(松散语法)

指一种语法规则较为宽松、灵活的编程或标记语言设计风格。

@ConfigurationProperties帮我自动匹配驼峰命名方式,能够执行成功

image-20241227160717336

4.3配置文件值注入

4.3.1邮箱验证

引入依赖

	    <!-- 验证依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>

使用@ConfigurationProperties

image-20241227164452409

image-20241227164931407

告诉我们不是一个合法的邮箱,更改邮箱继续尝试

此时通过校验

image-20241227165055629

使用@Value

验证成功

image-20241227165415285

@Value还支持运算,但是@ConfigurationProperties不支持

image-20241227170434404

4.3.2@PropertySource&@ImportResource&@Bean

@PropertySource:加载指定的配置文件;

image-20241227173808086

image-20241227174202430

@ImportResource

导入Spring的配置文件,让配置文件里面的内容生效;

Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;

想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上

image-20241227174324194

image-20241227174331819

SpringBoot推荐给容器中添加组件的方式;推荐使用全注解的方式

1、配置类@Configuration------>Spring配置文件

2、使用@Bean给容器中添加组件

/**
* @Configuration:指明当前类是一个配置类;就是来替代之前的Spring配置文件
*
* 在配置文件中用<bean><bean/>标签添加组件
* *
/
@Configuration
public class MyAppConfig {//将方法的返回值添加到容器中;容器中这个组件默认的id就是方法名@Beanpublic HelloService helloService02(){System.out.println("配置类@Bean给容器中添加组件了...");return new HelloService();}
}

4.4配置文件占位符

4.4.1随机数
  • ${random.value}:生成一个随机字符串
  • ${random.int}:生成一个随机的整数
  • ${random.long}:生成一个随机的长整数。
  • ${random.int(10)}:生成一个0到10之间的随机整数(包括0,不包括10)。
  • ${random.int[1024,65536]}::生成一个1024到65536之间的随机整数(包括1024,不包括65536)。
4.4.2占位符获取之前配置的值,如果没有可以是用:指定默认值
person.last‐name=张三${random.uuid}
//每次应用启动时都会生成不同的UUID,如"张三3f1d63f5-4ab1-4b87-9472-8f618d88e2a3"
person.age=${random.int}
//生成一个随机的整数
person.birth=2017/12/15
person.boss=false
person.maps.k1=v1
//设置maps中 k1键的 value值 为 v1
person.maps.k2=14
person.lists=a,b,c
//自动解析lists为List类型的属性,并包含a,b,c
person.dog.age=15
person.dog.name=${person.hello:hello}_dog

如果person.hello配置存在时,例如:person.hello的值为 world,因此person.dog.name 的最终值为 world_dog

如果person.hello配置不存在,Spring 会使用默认值 "hello",因此,person.dog.name 的最终值为 hello_dog

4.5Profile

4.5.1多Profile文件

我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml

默认使用application.properties的配置;

4.5.2yml支持多文档块方式

image-20241227174825079

server:port: 8085spring:profiles:active: dev---
person:Email: 1234561@163.comlast_name: 张三01age: 18boss: truebirth: 2017/12/12maps: {k1: v1,k2: 12}lists: [lisi,wangwu]dog:name: 小狗age: 12
spring:profiles: dev---
person:Email: 1234561@163.comlast_name: 张三02age: 18boss: truebirth: 2017/12/12maps: {k1: v1,k2: 12}lists: [lisi,wangwu]dog:name: 小狗age: 12
spring:profiles: prod

文档块以 ---分隔开

image-20241227175513240

4.5.3激活指定profile
  1. 在配置文件中指定 spring.profiles.active=dev
  2. 命令行:java -jar springboot01-1.0-SNAPSHOT.jar --spring.profiles.active=dev
  3. 可以直接在测试的时候,配置传入命令行参数
  4. 虚拟机参数;
  5. -Dspring.profiles.active=dev

image-20241227180204157

4.6配置文件加载位置

springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件

配置文件的读取顺序,优先级由高到低,高优先级的配置会覆盖低优先级的配置:

classpath一般为resources

  1. 根目录/config/
  2. 根目录/
  3. classpath目录/config/
  4. classpath目录/
    image-20241227184443339

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com