properties 位置优先级:
这四个位置是默认位置,即 Spring Boot 启动,默认会从这四个位置按顺序去查找相关属性并加载。但可以通过 spring.config.location 属性来手动的指定配置文件位置,去指定目录下查找 application.properties 文件。
properties属性注入
book.properties
book.name=三国演义
book.author=罗贯中
book.id=1
properties传统方式在类中注入属性
@Component
//加载配置文件
@PropertySource("classpath:book.properties")
public class Book {
@Value("${book.id}")
private Long id;
@Value("${book.name}")
private String name;
@Value("${book.author}")
private String author;
//getter/setter
}
SpringBoot类型安全的属性注入
@Component
@PropertySource("classpath:book.properties")
@ConfigurationProperties(prefix = "book")
public class Book {
private Long id;
private String name;
private String author;
//getter/setter
}
@ConfigurationProperties(prefix = “book”)自动将Spring容器中对应的数据注入到对象属性中,不用@Value挨个注入
yaml yaml与properties的区别是yaml以缩进(空格缩进,不是Tab)代码层级关系, yaml有序,properties无序 yaml对 大小写敏感 书写格式:
key: value
redis:
redisConfigs:
- host: 192.168.66.128
port: 6379
# 注释,: value间有一个空格
#yaml方式注入
@Component
@ConfigurationProperties(prefix = "redis")
public class RedisCluster {
private List<SingleRedisConfig> redisConfigs;
//省略getter/setter
}
yaml数组注入 yaml也支持数组注入,例如
my:
servers:
- dev.example.com
- another.example.com
这段数据可以绑定到一个带Bean的数组中:
@ConfigurationProperties(prefix="my")
@Component
public class Config {
private List<String> servers = new ArrayList<String>();
public List<String> getServers() {
return this.servers;
}
}