天天看点

SpringBoot (二)配置文件配置文件

配置文件

(一)配置文件

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

  • application.properties
  • application.yml

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

(二)YMAL语法

(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

SpringBoot (二)配置文件配置文件
<!‐‐导入配置文件处理器,配置文件进行绑定就会有提示‐‐>
		<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的配置文件,让配置文件里面的内容生效;

(5)@Value与@ConfigurationProperties区别

SpringBoot (二)配置文件配置文件
@Value("${person.last-name}")   //松散绑定,@value的配置必须与配置文件里的一致
    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

SpringBoot (二)配置文件配置文件
SpringBoot (二)配置文件配置文件

当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 (二)配置文件配置文件

SpringBoot会从这四个位置全部加载主配置文件;互补配置;

2、项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默

认加载的这些配置文件共同起作用形成互补配置;

java -jar spring-boot-0.0.1-SNAPSHOT.jar --spring.config.location=E:/application.yml

继续阅读