SpringBoot配置
SpringBoot使用一个全局的配置文件,配置文件名是固定的;
- application.properties
- application.yml
Yaml语法
YAML:以数据为中心,比json、xml等更适合做配置文件;
key:(空格)value:表示一对键值对(空格必须有);
以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的
server:
port: 8081
path: /yaml
值的写法
字符串默认不用加上单引号或者双引号;
"":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
name: "yaml \n list":输出;yaml 换行 list
'':单引号;会转义特殊字符,特殊字符终只是一个普通的字符串数据
name:'yaml \n list' 输出: yaml \n list
map
student:
name: xiaoming
age: 20
数组
用- 值表示数组中的一个元素
pets:
‐ cat
‐ dog
‐ pig
配置文件值注入
//applicatio.yml
student:
name: lb
age: 20
birth: 1998-07-08
map:
k1: v1
k2: 12
list:
- java
- python
- ruby
animal:
name: dog
age: 4
//student
@Component
@ConfigurationProperties(prefix = "student")
public class student {
private String name;
private int age;
private String birth;
private Map<String,Object> map;
private List list;
private animal animal;
...//省略get set等方法
@configuration和@value的区别
@ConfigurationProperties | @V alue |
|
功能 | 批量注入配置文件中的属性 | 一个个指定 |
松散绑定 | 支持 | 不支持 |
SpEL | 不支持 | 支持 |
JSE303数据校验 | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
*JSE303数据校验(@Validated)
如果只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;
如果专门编写了一个javaBean来和配置文件进行映射,就直接使用@ConfigurationProperties;
@propertysource
加载指定的文件配置
@PropertySource("classpath:student.properties")
@Component
@ConfigurationProperties(prefix = "student")
//@Validated
public class student {
// @Value("张三")
private String name;
// @Value("#{1*21}")
// @Email
private int age;
private String birth;
private Map<String,Object> map;
private List list;
private animal animal;
spring boot推荐给容器中添加组件的方式: 推荐使用全注解的方式
/**
* @author LB
* @create 2019-04-16 10:31
* @Configuration指定当前类是个配置类
*/
@Configuration
public class MyAppconfig {
//将方法的返回值添加到容器中,默认的ID就是方法名
@Bean
public HelloService helloService(){
System.out.println("成功了");
return new HelloService();
}
}
Profile
我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml。默认使用application.properties的配置;
激活方式:spring.profiles.active = xxx
如果使用yml文件
server:
port: 8081
spring:
profiles:
active: prod
---
server:
port: 8888
spring:
profiles: dev
---
server:
port: 8889
spring:
profiles: prod
配置文件的加载位置
springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文 件
- –file:./config/
- –file:./
- –classpath:/config/
- –classpath:/
优先级由高到低,高优先级的配置会覆盖低优先级的配置,互补配置
(***spring boot2.0之后,上下文的配置改为了server.servlet.context-path****)
外部文件配置
自动配置原理
配置文件能写那些