创建配置属性类
可以使用创建一个实体类,并交给IOC容器管理,加上@ConfigurationProperties注解,来自动获取配置项,但要求满足以下条件:
- 创建实体类对象,key的值和实体类中的属性名一致
- 提供get,set方法;@Data
- 交给IOC容器管理,交给IOC容器中的bean对象@Component
- 自动注入;@ConfigurationProperties(prefix=“属性前缀”)
- 引入以下pom依赖,yml配置文件中就会有提示
@Data @Component @ConfigurationProperties(prefix = "aliyun.oss") public class AliOSSProperties { private String endpoint ; private String accessKeyId; private String accessKeySecret ; private String bucketName; }
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> </dependency>
配置文件中配置参数
sky: jwt: # 设置jwt签名加密时使用的秘钥 admin-secret-key: itcast # 设置jwt过期时间 admin-ttl: 7200000 # 设置前端传递过来的令牌名称 admin-token-name: token
参数自动注入
@Autowired private AliOSSProperties aliOSSProperties; public String upload(MultipartFile file) throws IOException { //获取阿里云oss的参数 String endpoint = aliOSSProperties.getEndpoint(); String accessKeyId = aliOSSProperties.getAccessKeyId(); String accessKeySecret = aliOSSProperties.getAccessKeySecret(); String bucketName = aliOSSProperties.getBucketName();
@Value注解只能一个一个的进行外部属性的注入
@ConfigurationProperties可以批量的将外部的属性配置注入到bean对象的属性中。
yml基本语法
- 大小写敏感
- 数值前边必须有空格,作为分隔符
- 使用缩进表示层级关系,缩进时,不允许使用Tab键,只能用空格(idea中会自动将Tab转换为空格)
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
#
表示注释,从这个字符一直到行尾,都会被解析器忽略
yml数据格式
对象/Map集合
user:
name: zhangsan
age: 18
password: 123456
数组/List/Set集合
hobby:
- java
- game
- sport