SpringBoot----笔 记2(配置文件)

快速创建一个SpringBoot项目,选择需要的模块,向导会联网创建SpringBoot项目;
默认生成的SpringBoot项目;

  • 主程序已经生成好了,只需要编写自己的逻辑
  • resources文件夹中目录结构
    static:保存所有静态资源:js、css、images;
    templates:保存所有的模板页面(springBoot默认jar包使用嵌入式的tomcat,默认不接受jsp页面),可以使用模板引擎(freemarker、thymeleaf)
    application:springBoot应用的配置文件,可以修改默认配置

YAML

  • 基本语法:
  • key value形式,中间有空格
server:
  port: 8080

属性和值也是大小写敏感

值的写法

  • 字面量:普通的值(数字,字符串,布尔)
    k: v 字面直接写
    字符串默认不加上单引号或双引号
    “”:双引号:不会转义字符串里面的特殊字符,特殊字符会作为本身表达的意思
    name: “zhangsan \n lisi” 输出: zhangsan 换行 lisi
    ‘’:单引号:会转义特殊字符,特殊字符最终输出
    ‘zhangsan \n lisi’ 输出:zhangsan \n lisi
  • 对象、Map(属性和值)(键值对):
    k: v:在下一行来下写对象的属性和值的关系:主要缩进
    对象还是 k: v 的方式
firends:
        name: zhangsan
        age: 12

行内写法

friends: {name: zhangsan,age: 20}
  • 数组(List、Set):
    用 - 值表示数组中的一个元素
pets:
 - cat
 - dog
 - pig

行内写法

pets: [cat,dog,pig]

如何将类绑定配置文件,使其获取配置文件中配置的值

在类上添加 @ConfigurationProperties注解:

/**
@ConfigurationProperties:告诉springboot将本类中的所有属性和配置文件中相关的配置进行绑定
prefix="person":配置文件中哪个下面的所有属性进行一一映射
只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties 功能

*/
@Component
@ConfiguratioProperties(prefix="person")
public class Person{
	private String name;
	private String age;
	.....
}

当使用@Validated注解对数据进行校验时,只能使用@ConfigurationProperties注解来获取配置文件值,而不能使用@Value注解来获取配置文件值
如果说,我们专门编写了一个JavaBean来和配置文件进行映射,我们就直接使用ConfigurationProperties
application.yml配置文件
在这里插入图片描述
person类
在这里插入图片描述
通过使用@ConfigurationProperties注解获取person值
在这里插入图片描述
通过@Value注解获取值
在这里插入图片描述

@PropertySource和@ImportResource

@PropertySource:加载指定的配置文件。由于@ConfigurationProperties是用来指定全局属性的,而@PropertySource是用来指定特定的属性(如果一个属性在application.yml文件(全局属性)中和other.properties文件(特有属性)中都存在,则以全局属性为标准

@PropertySource(value={"classpath:person.properties"})
@Component
@ConfigurationProperties(prefix="person")
//@Validated
public class Person {

//    @Email
  //  @Value("${person.name}")
    private String name;
 //   @Value("#{11*2}")
    private String age;
    private Map<String,Object> maps;
    private List<String> list;
    private Dog dog;

@ImportResource:导入Spring的配置文件,让配置文件里面的内容生效;
SpringBoot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;
想让Spring的 配置文件生效,加载进来,@ImportResource标注在一个配置类上

@ImportResource(locations={"classpath:beans.xml"})
导入Spring的配置文件让其生效

SpringBoot推荐给容器中添加组件的方式:推荐使用全注解的方式
1、配置类=======Spring配置文件
2、使用@Bean 给容器中添加组件
在这里插入图片描述

配置文件的占位符

RandomValuePropertySource:配置文件中可以使用随机数

  • 随机数
${random.value}、${random.int}、${random.long}、${random.int(10)}、$random.int[1024,65536]}

-占位符获取之前配置的值,如果没有可以使用:指定默认值

person:
  name: 张三${random.uuid}
  age: ${random.int}
  maps: {k1:88,k2:00}
  list:
    - aa
    - bb
  dog:
    name: ${person.hello:hello}_小狗
    age: 1
属性配置占位符
app.name=MyApp
app.description=${app.name} is a Spring Boot Application

可以在配置文件中引用前面配置过的属性(优先级前面配置过的这里都能使用)。
${app.name:默认值}来指定找不到属性时的默认值

person:
  name: 张三${random.uuid}
  age: ${random.int}
  maps: {k1:88,k2:00}
  list:
    - aa
    - bb
  dog:
    name: ${person.name}_小狗
    age: 1
Profile

profile是Spring对不同环境提供不同配置功能的支持,可以通过激活、指定参数等方式快速切换环境

  • 多Profile文件形式:
    多格式:application-{profile}.properties: .application-dev.properties、application-prod.properties
    图片中三个properties文件中都设置了端口号,分别为;8081,8082,8083,默认使用端口为application.properties的端口
    在这里插入图片描述
    如何使用dev或者prod文件中的端口

  • 多Profile文档块模式:

  • 激活方式:
    命令行 --spring.profiles.active=dev

在application.properties中激活dev
spring.profiles.active=dev

配置文件 spring.profiles.active=dev
jvm参数 -Dspring.profiles.active=dev

上述操作如何在yml文件中实现
server:
  port: 8080
spring:
  profiles:
    active: dev
person:
  name: 张三${random.uuid}
  age: ${random.int}
  maps: {k1:88,k2:00}
  list:
    - aa
    - bb
  dog:
    name: ${person.name}_小狗
    age: 1

---
server:
  port: 8082
spring:
  profiles: dev
---
server:
  port:8083
spring:
  profiles: prod

配置文件加载位置
  • SpringBoot启动回扫描以下位置的application.properties或者application.yml文件作为Spring Boot的默认配置文件
    file:./config/
    file:./
    classpath:/config/
    classpath:/
    以上是按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置内容回覆盖低优先级配置的内容
    我们也可以通过配置spring.config.location来改变默认配置
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值