目录
6.@ConfigurationProperties 与 @Value
1.配置文件对比
2.yml基本语法约定
注意标红
3.yml数据格式
3.1对象/map集合
行内写法:user: {name: zhangsan,age: 20,password:123456}
3.2数组/List/Set集合
行内写法:hobby: [java,game,sport]
3.3日期
日期:date: 2005/07/08
4.yml配置案例
5.SpringBoot读取YML
5.1 Value注解
注意使用此注解只能获取简单类型的值(8种基本数据类型及其包装类,String,Date)
@Value 注解通常用于外部配置的属性注入,具体用法为: @Value("${配置文件中的key}"
注意:加了@Value的类必须是交由IOC容器管理的
5.2 @ConfigurationProperties
yml配置
aliyun:
oss:
endpoint: https://oss-cn-beijing.aliyuncs.com
accessKeyId: LTAI5tEVSmHqVHcNMFrL5aMp
accessKeySecret: HKKaaZAYwbUlHdsGSCpDklcMJom0rU
bucketName: web-mikey
在类上添加注解@Component 和@ConfigurationProperties(prefix = “配置前缀”)
@Data
@Component
@ConfigurationProperties(prefix = "aliyun.oss")
public class AliOSSProperties {
private String endpoint;
private String accessKeyId;
private String accessKeySecret;
private String bucketName;
}
从IOC容器中获取对象 需要注入了!
@Component
public class AliOSSUtils {
@Autowired
private AliOSSProperties aliOSSProperties;
/**
* 实现上传图片到OSS
*/
public String upload(MultipartFile file) throws IOException {
//获取阿里云OSS参数
String endpoint = aliOSSProperties.getEndpoint();
String accessKeyId = aliOSSProperties.getAccessKeyId();
String accessKeySecret = aliOSSProperties.getAccessKeySecret();
String bucketName = aliOSSProperties.getBucketName();
注意:要求对应的属性要有set/get方法(@Data)并且key要和成员变量名一致才可以对应的上。
6.@ConfigurationProperties 与 @Value
相同点
都是用来注入外部配置的属性的
不同点
@Value注解只能一个一个的进行外部属性的注入。
@ConfigurationProperties可以批量的将外部的属性配置注入到bean对象的属性中。
简单来说,如果你需要一个简单、直观、易于编辑的配置文件,YML是个不错的选择。如果你需要严格的数据结构或者与特定系统兼容,可能会选择XML。而properties则适用于非常简单的配置需求。