SpringBoot (二)配置文件

一、配置文件

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

  • application.properties
  • application.yml

作用:修改SpringBoot自动配置的默认值。

二、YMAL语法

.yml是YAML语言的文件,以数据为中心,比json、xml等更适合做配置文件

(1)基本语法

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

server:
  port: 8081
  servlet:
    context-path: /hello

(2)值的写法

  1. 字面量:普通的值(数字,字符串,布尔)
    备注:字符串默认不用加上单引号或者双引号;加上单引号效果和默认相同,加上双引号,特殊字符会发生效果
person:                                     
  name: 张 \n 三
  name2: "李 \n 四"
  name3: '王 \n 五'

控制台打印输出

张 \n 三
李 
 四
王 \n 五
  1. 对象、Map(属性和值)(键值对):
    k: v:在下一行来写对象的属性和值的关系;注意缩进
friends:
	name: lisa
	age: 28                     

friends: {name: lisa, age: 28}   //行内写法
  1. 数组(List、Set):
animals:
  - pig
  - cat
  - dog

animals: [pig, cat, dog]        //行内写法

(三)值注入

如何获取配置文件里面的数据,有两种方法

person:
  age: 28
  boss: false
  birth: 2018/10/10
  maps: {k1: v1, k2: v2}
  animals:
    - pig
    - dog
  last-name: allen

(1) @Value

  @Value("${person.last-name}")
    private String lastName;

(2)javaBean

在这里插入图片描述

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

(3)javaBean注入值数据校验

@Validated     //校验注解
@Component
@ConfigurationProperties(prefix = "person")
public class Person {

    @Email    //验证是否是邮箱格式
    private String lastName;
    private Integer age;
    @NotNull   //验证不空
    private Boolean boss;
    private Date birth;
    private Map<String, Object> maps;
    private List<Object> animals;

注: 验证邮箱的时候需要导入

<!-- 导入字段校验:hiberrate validator -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.2.4.Final</version>
        </dependency>

(4)@PropertySource&@ImportResource

1、@PropertySource:加载指定的配置文件;
@ConfigurationProperties(prefix = “person”)默认从全局配置文件(application.yml)中获取值;如果想要获取指定配置文件,需要使用@PropertySource标签。@PropertySource(value = {“classpath:person.properties”})
在这里插入图片描述

2、@ImportResource:导入Spring的配置文件,让配置文件里面的内容生效;


@ImportResource(locations={"classpath:beans.xml"})

(5)@Value与@ConfigurationProperties区别

在这里插入图片描述

   //松散绑定,@value的配置必须与配置文件里的一致
    @Value("${person.last-name}")   
    private String lastName;
    
    @Value("#{11*2}")               //SPEL
    private Integer age;
    
    @Value("true")
    private Boolean boss;

(四)配置文件占位符

1、随机数

${random.value}${random.int}${random.long}${random.uuid}
${random.int(10)}${random.int[1024,65536]}

2、占位符获取之前配置的值,如果没有也可以使用:指定默认值(冒号后没有空格

person:
  last-name: allen
  dog:
    name: ${person.last-name:hello}_dog
    age: ${person.age:18}

(五)Profile

1、yml支持多文档块方式

server:
  port: 8081

spring:             // 启动哪个profile
  profiles:
    active: prod
---                // 用 --- 进行分割
server:
  port: 8082
spring:
  profiles: prod
---

server:
  port: 8083
spring:
  profiles: dev

2、多Profile文件
文件名可以是 application-{profile}.properties/yml

在这里插入图片描述
在这里插入图片描述

当application.yml文件中,没有spring.profiles.active时,启用application.yml文件中的配置;配置哪个用哪个文件。

注意:当代码已经打成jar包,但是如果想用另一个配置文件可以命令行:java -jar spring-boot-SNAPSHOT.jar --spring.profiles.active=dev;

(六)配置文件加载位置

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

–file:./config/
–file:./
–classpath:/config/
–classpath:/
优先级由高到底,高优先级的配置会覆盖低优先级的配置;
在这里插入图片描述
SpringBoot会从这四个位置全部加载主配置文件;互补配置

2、项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默
认加载的这些配置文件共同起作用形成互补配置;
java -jar spring-boot-0.0.1-SNAPSHOT.jar --spring.config.location=E:/application.yml

(七)自动配置原理

SpringBoot启动的时候加载主配置类,开启了自动配置功能@EnableAutoConfiguration。

@EnableAutoConfiguration作用:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值