在SpringBoot中有两种配置,一个是properties,一个是yml,他们的配置内容格式不同,但他们的作用是相同的。

properties和yml的区别:

1、yml相对于properties更简洁

2、yml中的数据是有序的,properties中的数据是无序的

位置问题

在SpringBoot中一共有四个地方可以存放application.properties文件

1、当前项目根目录下的config目录下

2、当前项目的根目录下

3、resources目录下的config目录下

4、resources目录下

按照如上的顺序,四个配置文件的优先级一次降低,如下:

springboot yml配置过期时间 springboot application.yml配置_配置文件

这四个位置是默认的位置,即SpringBoot启动默认会从这四个位置 按照顺序来加载配置,但是,这也不是绝对的,我们也可以在项目启动时自定义配置文件位置。

例如,现在在resources下创建一个aaa目录,目录存放一个application.properties文件,那么正常情况下当我们启动SpringBoot项目时,这个配置文件是不会被自动加载的,我们可以通过spring.config.location属性来手动的指定配置文件的位置,指定完成之后,系统会自动去指定目录下查找application.properties文件

springboot yml配置过期时间 springboot application.yml配置_spring boot_02

此时项目启动,系统就会自动加载你所自定义配置的配置文件,如果项目已经打成了jar包,在启动命令中加入位置参数即可

java -jar XXX.jar -- spring.config.location=classpath:/aaa/ 

文件名问题

对于application.properties而言,他不一定非要叫application,但是项目默认是去加载名问application的配置文件,如果不是application也是可以的,必须要明确指定配置文件的文件名。

方式和指定路径一致,只不过此时的key是spring.config.name.

首先我们在resources目录下创建一个app.properties文件,然后再idea中指定配置文件的文件名

springboot yml配置过期时间 springboot application.yml配置_properties文件_03

配置好文件名之后,系统默认还是从四个位置先后加载,当然也可以指定文件的位置,那就需要指定spring.config.location,文件名和文件路径可以同时指定。

普通的属性注入

1、新建Book对象

springboot yml配置过期时间 springboot application.yml配置_properties文件_04

2、在application.properties中定义

springboot yml配置过期时间 springboot application.yml配置_java_05

 

3、在book对象中增加@Value注解注入value值

springboot yml配置过期时间 springboot application.yml配置_spring boot_06

注意:Book对象本身也要交给Spring容器去管理,如果Book没有交给Spring容器那么Book中的属性也无法从Spring容器中获取到值。

配置完成后,在controller中注入Book对象,启动项目,就可以看到属性已经注入到对象中了。 

springboot yml配置过期时间 springboot application.yml配置_配置文件_07

乱码请先忽略。

一般来说,我们在application.properties中主要存放系统的配置,这种自定义的配置不建议放在该文件中,可以自定义properties文件来存放自定义配置

book.properties配置

springboot yml配置过期时间 springboot application.yml配置_spring_08

 此时项目启动并不会加载该配置文件,如果是在xml中配置,可以如下方式引用properties文件

<context:property-placeholder location="classpath:book.properties"/>

如果是在java配置中,可以通过@PropertySource来引入配置

springboot yml配置过期时间 springboot application.yml配置_配置文件_09

这时候项目启动,就会自动加载book.properties文件,这只是Spring中属性注入的一个简单的用法。和SpringBoot并没有什么关系

类型安全的属性注入 

SpringBoot引入了类型安全的属性注入,如果采用Spring中的配置方式,当配置的属性非常多的时候工作量就非常大了,而且容易出错。使用类型安全注入可以有效的解决这个问题。

springboot yml配置过期时间 springboot application.yml配置_spring boot_10