SpringBoot配置文件

什么是配置文件

如下图:

SpringBoot项目中会有一个自带的配置文件,它是properties后缀的。

配置文件的作用

配置文件是用来配置项目中的一些重要数据的。

如:数据库连接信息、项目的启动端口、日志等等。

如果没有这些信息,SpringBoot就无法连接和操作数据库,甚至不能保存用于排查错误信息的日志,所以,配置文件的作用是很重要的。

两种后缀的配置文件

.properties后缀的配置文件

它的格式为 key:value 格式的键值对

如果是多级的key,要用 . 来隔开,并且,即使有多个key都有相同的前缀,也不能简写。

如下:

(’‘#’是注释)

此时我想将启动端口设置为9090,此时就可以在配置文件里面输入如下:

然后我们启动项目看一下启动端口是否修改成功,如下:

 .yaml(yml)后缀的配置文件

.yaml的配置文件和.yml是相同的,后面就全部使用.yml为后缀

.yml文件的格式比较灵活,但是也很容易出错,它的写法类似于json,如下:

和.properties不同的是,它的每个层级都可以向下延伸,也就是说一个key后面可以跟多个不同的key。每个下级key都要和它的上级key之间留出一个 tab 的距离,并且在:后还要加一个空格。

如下:

key1:
  key2: value

两种后缀的区别和优缺点

.properties的优点:系统默认的配置文件、格式简单、优先级比.yml高(如果两个后缀的配置文件同时存在,并且有相同的配置信息,此时以.properties为优先)

.properties的缺点:写法比较冗余(多个同一目录下的key,需要写多次前缀)

.yml的优点:

1. 可读性高(不冗余),便于理解

2. 支持多种数据格式,如数组、对象...

3. 支持更多的编程语言

.yml的缺点:语法太灵活,容易出错。

用户自定义配置(.yml为例)

用户自定义的配置也是 key:value 的格式

如下:

mystr1: 你\n好
mystr2: '你\n好'
mystr3: "你\n好"

如果我们想要将这几个自定义的配置内容拿到,此时需要一个注解:@Value("${key}"),并且获取配置内容的类要被五大类注解修饰。

如果配置内容不加引号或加单引号,此时读取的是原本内容(特殊字符也不加翻译),如果加了双引号,此时会按照内容的原意返回,如下:

mystr1: 你\n好
mystr2: '你\n好'
mystr3: "你\n好"
@Controller
public class TestController {

    @Value("${mystr1}")
    private String mystr1;

    @Value("${mystr2}")
    private String mystr2;

    @Value("${mystr3}")
    private String mystr3;

    @PostConstruct
    public void doPostConstruct() {
        System.out.println("-------------------------------");
        System.out.println(mystr1);
        System.out.println(mystr2);
        System.out.println(mystr3);
        System.out.println("-------------------------------");
    }
}

此时运行项目,就可以看到区别:

 第一个是不加引号,第二个是加单引号,此时都没有将\n翻译为换行,而第三个加的双引号进行了换行。

除了上述的获取方式还有第二种。

student:
  id: 1
  name: "张三"
  age: 18
@ConfigurationProperties("student")
@Component
@Setter
@Getter
@ToString
public class StudentComponent {
    private int id;
    private String name;
    private int age;
}

我们给类加上了@ConfigurationProperties("key")注解。

此时会将key名相同,并且实现了setter方法的属性进行赋值,

此时我们输出这个类的信息。

@Controller
@ResponseBody
public class TestController {
    @Autowired
    private StudentComponent component;

    @PostConstruct
    public void doPostConstruct() {
        System.out.println(component);
    }
}

SpringBoot不同平台的配置规则

1. 必须有主配置文件:application.xxx(后缀:.properties或.yml) 

2. 不同配置平台的配置文件(不同平台都有自己的配置文件)。

名称为:application-xxx(xxx的内容自己设定).xxx(后缀)

举个例子:

开发环境的配置文件,里面设置了6666端口

 测试环境的配置文件里面设置了7777端口

生产环境的配置文件里面设置了8888端口

  此时如我们想使用某一个环境下的内容,就在主配置文件里面输入如下:

spring:
  profiles:
    active: prod(文件application-xxx里面的xxx)

执行如下:如果正确输出就是8888端口

 更多的系统配置属性

Common Application Properties

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追梦不止~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值