一、@Value方式
application.yml配置如下
filePath: /home/web/webfiles
使用@Value注解方式获取filePath的值
@Value("${filePath}")
private String filePathPrefix;
二、配置类方式
application.yml中配置如下
captcha:
secretId: AKIDrlQq5s5ze7KHzdEkPnuoSp9OO7ambbI6
secretKey: tgOxRL7Dgx69E9rMccMr5BLHvHNDm69J
endPoint: captcha.tencentcloudapi.com
captchaType: 9
captchaAppId: 2066740932
appSecretKey: 011GG45xitAg9WZ89E8Ohpg**
可以创建一个属性配置类,使用@ConfigurationProperties将该类变成Spring的一个组件,使程序在启动时可以给这个类的对象完成赋值。
@Data
@Component
@ConfigurationProperties(prefix = "captcha")
public class CaptchaProperties {
/**
* 腾讯云secretId
*/
private String secretId;
/**
* 腾讯云secretKey
*/
private String secretKey;
/**
* 腾讯云滑块验证接入地域域名
*/
private String endPoint;
/**
* 腾讯云滑块验证类型
*/
private Long captchaType;
/**
* 腾讯云滑块验证AppId
*/
private String captchaAppId;
/**
* 腾讯云滑块验证app密钥
*/
private String appSecretKey;
}
想获取这些属性值时,可以使用自动注入的方式获取对象的属性值。
详解:
(1)在@ConfigurationProperties注释中有两个属性:
locations:指定配置文件的所在位置
prefix:指定配置文件中键名称的前缀(我这里配置文件中所有键名都是以web.开头)
(2)@ConfigurationProperties 的基本用法非常简单:我们为每个要捕获的外部属性提供一个带有字段的类。请注意以下几点:
- 前缀定义了哪些外部属性将绑定到类的字段上
- 根据 Spring Boot 宽松的绑定规则,类的属性名称必须与外部属性的名称匹配
- 我们可以简单地用一个值初始化一个字段来定义一个默认值
- 类本身可以是包私有的
- 类的字段必须有公共 setter 方法
(3)Spring宽松绑定规则(relaxed binding)
该规则意味着当我们在配置属性类中是以驼峰命名法来书写属性名称时,在配置文件中可以使用以下几种方式去和驼峰命名的属性进行映射:
captcha:
secretId: AKIDrlQq5s5ze7KHzdEkPnuoSp9OO7ambbI6
secretid: AKIDrlQq5s5ze7KHzdEkPnuoSp9OO7ambbI6
secret-id: AKIDrlQq5s5ze7KHzdEkPnuoSp9OO7ambbI6
secret_id: AKIDrlQq5s5ze7KHzdEkPnuoSp9OO7ambbI6
SECRET_ID: AKIDrlQq5s5ze7KHzdEkPnuoSp9OO7ambbI6