目录
二、当存在多个配置文件时,我们如何去选择激活哪一个配置文件呢?
一、给实体类赋值的三种方法,多用于yaml给配置文件赋值
第一种直接注入
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
public class Dog {
@Value("旺财")
private String name;
@Value("3")
private Integer age;
}
然后在springboot提供的测试类中去测试
@SpringBootTest
class SpringBootTestApplicationTests {
@Autowired
//@Qualifier 可以指定某一条狗
private Dog dog;
@Test
void contextLoads() {
System.out.println(dog);
}
}
结果输出正确
第二种利用yaml配置文件
在springboot中,我们常用的是yaml配置文件,接下来看看如何去用yaml配置文件去实现实体类
yaml文件的格式是键值对 key: value,冒号后面需要有一个空格,同一级数据结构在同一列,比如
person:
name:
surname:zhang
上述代码相当于 person.name.surname=zhang;
person:
name: ${random.uuid}
age: ${random.int}
happy: false
birth: 2019/11/02
maps: {k1: v1,k2: v2}
lists:
- code
- music
- girl
#如果person.hello的值存在,则结果为person.hello的值+_旺财
#如果person。hello的值不存在,则结果为hello_旺财
#hello为默认值
dog:
name: ${person.hello:hello}_旺财
age: 3
实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
//如果不配置这个注解,就会提示爆红,可以通过这个注解产生提示
//引入spring-boot-configuration-processor依赖后爆红消失
//prefix = "person"这个person值就是yaml中配置的key
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private Integer age;
private Boolean happy;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
}
测试类测试
@SpringBootTest
class SpringBootTestApplicationTests {
@Autowired
private Person person;
@Test
void contextLoads() {
System.out.println(person);
}
}
结果输出正确
第三种自定义配置文件
zxc.properties中的的内容
name=zhangsan
age=15
实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
//javaConfig绑定配置文件,可以采取这些方式!
//加载指定的配置文件
@PropertySource(value = "classpath:zxc.properties")
public class Person {
//SPEL表达式取出配置文件的值
@Value("${name}")
private String name;
@Value("${age}")
private Integer age;
private Boolean happy;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
}
测试类测试
@SpringBootTest
class SpringBootTestApplicationTests {
@Autowired
private Person person;
@Test
void contextLoads() {
System.out.println(person);
}
}
结果输出正确
二、当存在多个配置文件时,我们如何去选择激活哪一个配置文件呢?
可以配置多个文件
#springboot的多环境配置,可以选择激活哪一个配置文件
spring.profiles.active=dev
而yaml文件只需要配置一个即可
---之间代表一个文件,下列代码总共分成了三个文件,与上面三个文件等价
server:
port:8080
#选择激活哪一个版本
spring:
profiles:
active: dev
---
server:
port: 8081
#给文件命名为dev
spring:
profiles:dev
---
server:
port: 8082
#给文件命名为test
spring:
profiles:test
三、yaml还可以去修改装配类的属性。
springboot会通过xxxAutoConfiguration注解自动装配很多的类,而这些类的所有默认值都是从Properties中获取的,可以通过yaml配置文件直接去修改这些默认值,比如修改端口号
server:
port: 8081