假设一个需求是这样的:项目要求使用阿里云的 OSS 进行文件上传。
我们知道,一个项目一般会分为开发环境、测试环境和生产环境。OSS 文件上传一般有如下几个参数:appKey、appSecret、bucket、endpoint 等。不同环境的参数都可能不一样,这样便于区分。按照传统的做法,我们在代码里设置这些参数,这样做的话,每次发布不同的环境包都需要手动修改代码。这个时候,我们就可以考虑将这些参数定义到配置文件里面。
创建实体类 AliyunAuto,并编写以下代码:
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component @ConfigurationProperties(prefix = "oss") public class AliyunAuto { private String appKey; private String appSecret; private String bucket; private String endPoint; public String getAppKey() { return appKey; } public void setAppKey(String appKey) { this.appKey = appKey; } public String getAppSecret() { return appSecret; } public void setAppSecret(String appSecret) { this.appSecret = appSecret; } public String getBucket() { return bucket; } public void setBucket(String bucket) { this.bucket = bucket; } public String getEndPoint() { return endPoint; } public void setEndPoint(String endPoint) { this.endPoint = endPoint; } @Override public String toString() { return "AliyunAuto{" + "appKey='" + appKey + '\'' + ", appSecret='" + appSecret + '\'' + ", bucket='" + bucket + '\'' + ", endPoint='" + endPoint + '\'' + '}'; } }
其中,ConfigurationProperties 指定配置文件的前缀属性,实体具体字段和配置文件字段名一致,如在上述代码中,字段为 appKey,则自动获取 oss.appKey 的值,将其映射到 appKey 字段中,这样就完成了自动的注入。如果我们增加一个属性,则只需要修改 Bean 和配置文件即可,不用显示注入。