这次主要介绍sb的配置使用,包括配置文件,加载顺序,配置原理。
-
配置文件中有两种一般放在resources或者类路径下的config下,配置形式有两种yml语法和properties两种。
在maven中resource文件夹是在类路径下(class文件夹下),不是一个新的文件夹。
-
如何在代码中获取到这些配置文件的信息,配置文件值注入。
-
还有Profile的使用,根据环境不同,选择使用不同的配置文件。
-
接下来就是讲解自动配置的原理,如何根据场景选择导入不同的依赖的。
1. 配置文件
springboot使用一个全局的配置文件,配置文件名是固定的:
application.properties
application.yml
配置文件的作用是:修改sb自动配置的默认值。
2. YAML语法
k:(空格)v:表示一对键值对(空格必须有);
以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的
属性和值也是大小写敏感;
1. 值的写法
1. 普通值
K: v 语法
对于字符串,不需要加引号,加上了则有特殊意义:
- ‘ ‘:单引号 会转义特殊字符,将特殊字符作为普通数据
- “ ”:双引号 不会转义特殊字符,将特殊字符存储,输出时按照原意义输出,\n 会换行。
2. 对象和Map
key:
k1: v1
k2: v2
行写法:
person: {name: zs,age:18} #空格
3.数组和Set
peosons:
- a1
- a2
- a3
2. 配置文件绑定类@ConfigurationProperties
将配置文件中的每一个属性的值,映射到spring的组件中,通过注解@ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;prefix = “person”:配置文件中哪个下面的所有属性进行一一映射。
<!--自己创建的配置文件类和配置文件绑定的提示依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
//验证属性注入是否成功:
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
@Autowired
Person person;
@Test
public void contextLoads() {
System.out.println(person);
}
}
3. @ConfigurationProperties
与 @Value
比较:
- 如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;
- 如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;
4. @PropertySource
上面的2 . 3.4都是关于值注入的,这里在介绍两种属性值注入的方式。
@PropertySource 加载指定配置文件;
默认的加载的配置文件是application.yml文件中的配置信息,使用@PropertySource可以指定使用的配置文件。
//让Person类使用person.yml的配置文件信息;
person.lastName="张三 \n 换行"
person.age=18
person.maps.k1=v1
@PropertySource("classpath:person.properties")
@Component//与配置文件绑定,必须是spring的组件
@ConfigurationProperties(prefix = "person")//指定配置文件的前缀
@Data
public class Person {
// @Value("${person.last-name}") .会先于ConfigurationProperties赋值。
private String lastName;
// @Value("#{18*2}")
private Integer age;
private Boolean boss;
private Date birth;
private Map<String, Object> maps;
private List<Object> lists;
private Dog dog;
}
注意:会先去普通配置文件中加载信息,加载之后,会去主配置中再去加载信息,最终使用的是主配置文件信息。
3. 给容器中添加组件
@ImportResource&@Bean
使用@ImportResource 标注在配置类上,可以导入spring的xml文件到spring容器中,会自动创建xml文件中定义的bean。
@Bean是将返回值注册spring容器中。
4. Profile
创建多个配置文件,供给不同运行环境下使用:
#指定激活使用那种环境
spring:
profiles:
active: dev
5. 配置文件的加载顺序
springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件
–file:./config/ 项目的根路径下/config
–file:./ 项目的根路径下
–classpath:/config/
–classpath:/
优先级由高到底,高优先级的配置会覆盖低优先级的配置;
关于自动配置原理看这一篇: