文章目录
获取配置文件的值
配置文件
yml格式:
person:
name: 张三
age: 20
birth: 2000/10/12
maps: {k1: v1,k2: 12}
lists:
- lisi
- wangwu
dog:
name: litter_dog
age: 10
properties格式:
person.name=张三
person.age=20
person.birth=2000/10/12
person.maps.k1=v1
person.maps.k2=12
person.lists:lisi,wangwu
person.dog.name=litter_dog
person.dog.age=10
乱码问题:
如果运行后获取的中文值时乱码可以通过File ----> Setting 搜索File Encodings进行设置
注解@ConfigurationProperties
/**
* @ConfigurationProperties(prefix = "person")告诉springboot,
* 获取前缀为person的数据,如果需要获取使用直接在其他类中@Autowired注入即可
* */
@ConfigurationProperties(prefix = "person")
@Data
@Component //注入spring容器中
public class Person {
private String name;
private Integer age;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
}
结果:
注解@Value
@Data
@Component
public class Person {
@Value("person.name")
private String name;
@Value("#{11*2}")
private Integer age;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
}
结果:
@Value获取值和@ConfigurationProperties获取值比较
项目 | @ConfigurationProperties | @Value |
---|---|---|
功能 | 批量注入配置文件中的属性 | 一个个指定 |
SpEL | 不支持 | 支持 |
JSR303数据校验 | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
注解@PropertySource
使用:@PropertySource(value={“classpath:person.properties”})
作用:加载某个配置文件中的值,@ConfigurationProperties是全局配置,这个可以设置加载局部配置
注解@ImportResource
使用:@ImportResource(location={“classpath:beans.xml”})
作用:导入Spring的配置文件,让配置文件里面的内容生效(注解在配置类上)
配置文件占位符
随机数
${random.value}、${random.int}、${random.long}、${random.int(10)}、 ${random.int(1024,65536)}
占位符默认值
占位符获取之前配置的值,如果没有可以使用指定的默认值
${person.hello}:获取之前配置文件中的值
${person.hello:hello}:获取之前配置文件中的值,如果没有,则填hello
Profile(切换环境)
使用方式:
- 配置文件名application-{profile}.properties/yml,默认使用application.properties/yml
- 在application.properties中配置激活哪个文件spring.profiles.active=dev,这里的dev为后缀{profile}即可激活
- 如果是yml的格式可以使用文档块的形式配置
例子:
server:
port: 8081
spring:
profiles:
active: prod
---------------------------------
server:
port: 8083
spring:
profiles: dev
---------------------------------
server:
port: 8084
spring:
profiles: prod
根据spring.profiles.active选择激活哪个文档块
- 在运行时使用命令行形式激活 --spring.profiles.active=dev
也可以java -jar jar包 --spring.profiles.active=dev
配置文件加载位置
springboot启动会扫描以下位置的application.properties/yml作为Springboot的默认配置文件
file:./config/ ---> file:./ ---> classpath:/config/ --->classpath:/
高优先级的配置会覆盖低优先级的配置
在打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默认加载的这些配置文件共同起作用形成互补配置
java -jar jar包 --spring.config.location=配置文件路径