SpringBoot使用全局的配置文件,配置文件的名称是固定的
目前推荐这两种命名方式:
1.application.properties
语法结构:key=value
2.application.yml
语法结构: key:空格 value
可以创建将properties配置文件删除,创建yml或yaml文件。
配置文件的作用:修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动装配好了
通过点击pom.xml文件中的Spring-boot-starter-parent,能够看到SpringBoot允许读取三种类型的配置文件。
原先在properties文件中设置:
现在在yaml文件中进行修改配置:
properties文件只能保存键值对key=value,yaml文件同样能够做到,与此同时还能够保存【对象】,以及【数组】。
注:yaml对空格的要求十分严谨。
yaml文件能够注入到我们的配置类中。
yaml给实体类赋值的几种方式:
原始方式:通过在私有属性上@Value(“xxx”)进行赋值。
通过ymal对实体类进行属性注入:
解决办法:导入官方文档中的依赖即可,再重启IDEA即可:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
@ConfigurationProperties
@ConfigurationProperties(prefix = “user”)指定yaml配置文件中的映射。
@ConfigurationProperties作用:将配置文件中的配置的每一个属性的值,映射到这个组件中;
告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定,参数prefix = “user”:将配置中的user下面的所有属性一一对应,只有这个组件是容器的组件,才能使用容器提供的ConfigurationProperties功能
@Component (把普通pojo实例化到spring容器中,相当于配置文件中的 )
泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。
注:此时ymal赋值存在问题。
当属性名对应不一致时,会报错比如上图的bith–bithday。以及2021-01-01是String格式,转Date时也会报错。maps里的value是String格式,但是属性中是Integer格式,这些问题都是错误原因。
yaml升级玩法
1.name的随机uuid,
2.age的随机数
3.dog名字的占位符取值,当存在user.namdde时,就取该属性值_wang,否则就取旺财_wang。有点类似a>b?a:c。这些都是properties做不到的。
读取指定properties文件,并赋值
新建zhaoyun.properties文件。
通过@PropertySource(value = “classpath:zhaoyun.properties”)读取指定的配置文件
在属性上加@Value("${name}")同样能够赋值成功。SPEL表达式的方式。