SpringBoot配置
一、yaml重点用途:可以直接给实体类赋值
- 对象的值配置到yaml中,我们的java类是空的
如何用yaml配置文件给实体类注入值
-
现在yaml中写好要注入的值
-
在实体类上用@ConfigurationProperties注解
-
用这个注解不做一个配置会爆红【不影响程序的运行】
-
解决方法
-
官方文档中的依赖导入即可
-
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
-
-
-
@ConfigurationProperties():中加上prefix=“yaml文件中的类名”
-
通过这个参数将实体类和配置类绑定起来,绑定起来就有注入的值了
-
类名小写
-
prefix是前缀意思
-
@Component @ConfigurationProperties(prefix = "person") public class Person {
-
yaml配置文件中的一些特殊语法
-
person: name: ${person.hello:hello}_kami //当没有hello值时候就执行后面的_kami,有hello值就是该值 age: ${random.int} hello: kk //结果就是Person{name='kk_kami', age=1568427848}
- ${random.int}就是一些随机占位符
- 是spring的EL表达式
用yaml方式配置,不在用@Value方式的原因
-
-
cp只需要写一次即可,value则需要每个字段都添加
-
松散绑定:这个什么意思呢?比如我们在yaml中写的last-name,这个和lastName是一样的。-后面跟着的字母默认是大写的。这就是松散绑定。
-
JSR303数据校验:这个就是我们可以在字段是增加一层过滤器验证,可以保证数据的合法性
-
@Validated //数据校验——开启这个验证支持才能使用如下的验证
-
引入依赖
-
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>
-
-
-
-
复杂类型封装:yaml中可以封装对象,使用@Value就不支持
总结
- 配置yaml和配置properties都可以获取到值,强烈推荐yaml
- 如果我们在某个业务中,只需要获取配置文件中的某个值,可以使用一下@Value
- 如果说,我们专门编写了一个JavaBean来和配置文件进行映射,就直接使用@configurantionProperties
二、Springboot的多环境配置【重点】:可以选择激活呢一个配置文件
properties方式
-
先创建3个配置环境,名字用-来替换
- application.properties
- application-dev.properties//一般用来配置正式版
- application-test.properties//一般用来配置测试版
-
spring.profiles.active = dev //需要执行那个配置文件,就换-后面的名字即可
yaml方式
-
使用—三个杠来分块
-
server: port: 8081 #需要执行那个配置文件,就换下面include后面的名字即可 spring: profiles: active: test --- server: port: 8082 # 下面表示设置配置文件的名称为dev spring: profiles: include: dev --- server: port: 8083 # 下面表示设置配置文件的名称为test spring: profiles: include: test