Springboot配置文件

目录

2、yaml的数据格式

3、java代码获取yaml中数据的方式

4、profile使用

5、 激活profile的方式

6、springboot配置文件的加载顺序


springBoot支持的配置文件有以下几种,其中yml和yaml实际上是同一种类型的不同后缀

  • properties
  • yml
  • yaml

分别用这三种配置文件对端口号进行配置

properties:

server.port=8081

yml与yaml(数据前面必须要有一个空格)

server:
  port: 8081

在同一级目录下优先级为:properties > yml > yaml

2、yaml的数据格式


yaml存储数组]

(注意 数据与 -  之间有空格

address:
  - hainan
  - hunan
#行内写法
  address: [hainan,hunan]

yaml存储纯量

msg: 'hellow \n word'  #单引号会忽略转义字符,原样输出
msg2: "hello \n word"  #双引号会识别转义字符,转义后输出

3、java代码获取yaml中数据的方式

数据准备:

name: zangsan
age: 19

person:
  age: 18

address:
    - hainan
    - hunan

msg: 'hellow \n word'  #单引号会忽略转义字符,原样输出
msg2: "hello \n word"  #双引号会识别转义字符,转义后输出

方式一:@Value注入

 @Value("${name}")//直接获取纯量
    private String name ;
    @Value("${person.age}")//获取键值对中的数据
    private Integer age;
    @Value("${address[1]}")//获取数组中的数据
    private String address1 ;

方式二:通过Environment获取(import org.springframework.core.env.Environment;

@Controller
public class c {
    @Autowired
    private Environment environment;
    @ResponseBody
    @RequestMapping("/aaa")
    public String ff(){
        String name = environment.getProperty("name");
    System.out.println(name);
        String age = environment.getProperty("person.age");
    System.out.println(age);
        String address = environment.getProperty("address[1]");
    System.out.println(address);
        return  "hehhehih";
    }
}

方式三:通过@ConfigurationProperties

该方法需要配合实体类使用,例如yaml中有name和age两个key,然后有实体类person与之对应,这时候要在实体类上标记@ConfigurationProperties注解,并且加入ioc容器中。后面通过注入的方式获取值

@Component//标记为bean加入IOC容器
@ConfigurationProperties//读取配置文件
public class Person {
    private  String name ;
    private Integer age;
    public String getName() {return name;  }
    public void setName(String name) {this.name = name; }
    public Integer getAge() { return age;}
    public void setAge(Integer age) {this.age = age;}
}

@Controller
public class c {
    @Autowired
    private Person person;
    @ResponseBody
    @RequestMapping("/aaa")
    public String ff(){
    System.out.println(person.getName());
    System.out.println(person.getAge());
        return  "hehhehih";
    }
}

特别说明:@ConfigurationProperties可以标明前缀,例如如果加上前缀person,那么就可以获取yaml中person的name和age,否则不能

@ConfigurationProperties(prefix = "person")//读取配置文件

4、profile使用

在生产、开发、测试中可能会用到不同的配置环境,这时候可以通过profile来从多套配置中选择一项生效。配置文件以‘application-’开头,然后根据实际情况去后缀,例如开发环境可以取为application-dev,生产环境可以取为:application-pro,测试环境可以取为:application-text

多文件配置(多套配置在不同文件中)

创建三个文件application-dev、application-pro、application-text,分别配置端口为8081、8082、8083

 通过主配置文件选择哪一个配置文件生效,在application.properties中通过spring.profiles.active设置生效的配置文件,要生效的配置文件只需要写‘application-’后面的后缀即可,因为前面是默认的。

 单文件配置(多套配置写在一个文件中)

使用yaml文件可以通过 ‘---’将位置文件进行分页,每一页代表一套配置,在下面的代码中将配置文件分成了4份,然后通过spring:profiles给每一份配置取名,方便后面通过spring:profiles:active选择生效的配置

5、 激活profile的方式

配置文件启动:

yaml

 properties

命令行的方式:

cmd指令启动

 idea命令行启动

 虚拟机启动

6、springboot配置文件的加载顺序

当同时出现application.properties、application.yml、application.yaml三种配置文件,并且内容冲突的时候,最终起作用的是properties然后到yml再到yaml

内部配置文件加载:spring启动的时候会从以下位置加载配置文件:

  • 项目根目录:./config/  
  • 项目根目录:./
  • classpath:/config
  • classpath:/

加载的优先级顺序是从上向下加载,并且所有的文件都会被加载,高优先级的内容会覆盖底优先级的内容,形成互补配置。

但是如果打包项目的时候,根目录的配置并不会被打包进去

外部配置文件加载:

外部配置文件总是会比内部的配置文件优先级更高

外部配置调用方式:java -jar   ‘jar包路径’  --spring.config.location='配置文件路径'  例如:

C:\Users\10152>java -jar D:\springboot02\springboot-actuator\target\springboot-actuator-
0.0.1-SNAPSHOT.jar --spring.config.location=D:\springboot02\springboot-
actuator\target\application.yml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值