SpringBoot的配置文件

一、配置文件

springBoot中有两种配置文件
•application.properties
•application.yml
YAML:是以数据为中心,比json、xml等更适合做配置文件。
YAML:配置例子:

server:
  port: 8888

如果一个项目中有.properties和yml两种配置文件,这两个配置文件互为补充。

二、YAML基本语法

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

server:
  port: 8888
  servlet:
    context-path: /hl

三、yaml中值的书写:

如上述的那个例子。
字符串默认不加单引号或者双引号 ;
“”:双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
name: “zhangsan \n lisi”:输出;zhangsan 换行 lisi
‘’:单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi

四、yml配置文件对象注入javaBean中

eg: yml配置如下:


person:
  lastName: HL
  age: 23
  boss: false
  birth: Yyyyy/MM/dd
  maps: {key1: value1, key2: value2}
  lists: [lisi,zhangshan]
  dog:
     name: 小狗
     age: ${person.age}           //其中可以用el表达式可以该对象的值。

javaBean的属性为:

@Component
@ConfigurationProperties(prefix = "person")
public class person {
    String lastName;
    String age;
    boolean boss;
    Date birth;
    Map<String,String> maps;
    List<String> lists;
    Dog dog;
    ....
}

其中Dog对象只需要加@Component,将其纳入springboot容器管理。
@Component是注解将其加入到springboot容器中。
@ConfigurationProperties(prefix = “person”)是读取yml配置文件,其中prefix是前缀。
之后,springboot会自动的为我们注入值。

=========================================================

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

=========================================================

四、application配置文件对象注入javaBean中

appilcation配置文件如下:

person.age=20
person.birth=2020/1/1
person.boss=false
person.dog.name=林
person.dog.age=22
person.last-name=hl
person.lists=dog,cat,morse
person.maps.key1=value1
person.maps.key2=value2

五、读取application的两种方式

  • @ConfigurationProperties(prefix = “person”)
  • @value("${所取的值}")
    在这里插入图片描述
    JSR303数据校验时,需要加入注解@Validated
  1. @value 单个值的注入,也可以对其进行计算(即为spel)并且@不支持复杂类型的封装,如map,list
    eg:

    @Value("${person.birth}")
     Date birth;
    ------------SpEL--------------------
    @Value("#{11*2}")
    private Integer age;
    -----------下面会报错---------------------
     @Value("${person.maps}")
     Map<String,String> maps;
    

@PropertySource

加载指定的文件,上面的两个是加载默认的文件配置,@PropertySource是加载指定文件的配置。
eg:

//需要指定文件的位置,以及需要加载的前缀
@PropertySource(value = {"classpath:person.properties"})
@Component
@ConfigurationProperties(prefix = "person")
//@Validated
public class Person {
      ******
}

@bean

需要配合类@Configuration==========》spring配置文件
使用@Bean给容器添加组件

/**
* @Configuration:指明当前类是一个配置类;就是来替代之前的Spring配置文件
*加上@Configuration该注解之后,该类代表是spring IOC容器
* 在配置文件中用<bean><bean/>标签添加组件
* */
@Configuration
public class JavaConfig1 {
    //将方法的返回值添加到容器中;容器中这个组件默认的id就是方法名
    @Bean("BWM")
    public Car getBWM(){
        System.out.println("配置类@Bean给容器中添加组件了...");
        return new BWM();
    }

}

多Profile开发

如果spring boot需要多个profile文件,(默认加载application.properties)需要在默认application中指定要加载的文档,其中加载的代码为: spring.profiles.active=pro。
并且命名的profile的规则为 :application-{profile}.properties/yml
eg:
在这里插入图片描述

配置文件加载的优先级

–file:./config/ (根目录下的config文件夹最高)
–file:./ (根目录下的config次之)
–classpath:/config/ (resource文件夹下的config文件夹第三)
–classpath:/ (resource文件夹下最低)
注意: 优先级由高到底,高优先级的配置会覆盖低优先级的配置;
SpringBoot会从这四个位置全部加载主配置文件;互补配置;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值