Contents

MyTlias-员工信息管理系统(五)-yml配置

Contents

OSS的参数直接放在代码中, 这不符合开发思想, 一个合理的方法是使用 yml 配置, 将配置文件改为 application.yml. 其好处是以数据为中心, 简洁且层次清晰. properties 文件层次不够清晰

yml 文件配置

需要注意 yml 文件的格式:

  • 大小写敏感
  • 数值前边必须有空格,作为分隔符
  • 使用缩进表示层级关系,缩进时,不允许使用Tab键,只能用空格(idea中会自动将Tab转换为空格)
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • # 表示注释,从这个字符一直到行尾,都会被解析器忽略

例如: 对象/Map:

user:
  name: zhangsan
  age: 18
  password: 123456

数组/List:

hobby:
  - java
  - yuanshen
  - sing

将原配置文件替换为 yml 文件, 注意加上OSS相关设置 原 properties 文件:

# mysql database connect
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/db_tlias
spring.datasource.username=root
spring.datasource.password=root226
# output the sql running log to screen
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
# automatically transfer sql-attr to java-obj-attr only when select
mybatis.configuration.map-underscore-to-camel-case=true
# upload file size limit
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=100MB
# oss connect setting
aliyun.oss.endpoint=https://oss-cn-beijing.aliyuncs.com
aliyun.oss.accessKeyId=LTAI5tS1adS4omhGW8sJCUHc
aliyun.oss.accessKeySecret=SxJeU6N16fd9vVREsYCeyoM9WISg1C
aliyun.oss.bucketName=rainbow-tlias

转为 yml 配置:

spring:
  # MySQL 数据库连接四要素
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db_tlias
    username: root
    password: root226
  # MultipartFile 文件上传大小限制
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 100MB
# mybatis 数据库运行时日志输出, 开启查询时驼峰命名自动转换
mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: true
# 阿里云OSS 连接四要素
aliyun:
  oss:
    endpoint: https://oss-cn-beijing.aliyuncs.com
    accessKeyId: yourID
    accessKeySecret: yourSecret
    bucketName: yourBucket

在 java 文件中, 对连接四要素单独用变量存放, 并使用 @Value(${}) 来为变量赋值:

@Value("${aliyun.oss.endpoint}")
private String endpoint;
@Value("${aliyun.oss.accessKeyId}")
private String accessKeyId;
@Value("${aliyun.oss.accessKeySecret}")
private String accessKeySecret;
@Value("${aliyun.oss.bucketName}")
private String bucketName;

OSSClient的创建方式相应的改为:

CredentialsProvider provider = new DefaultCredentialProvider(accessKeyId, accessKeySecret);
OSS ossClient = new OSSClientBuilder().build(endpoint, provider);

还有一种可选的简化方式, 它使用了 @ConfigurationProperties 注解, 此时, 需要把这些关于连接配置的属性单独放在一个实体类 AliOSSConfig, 再添加**@ConfigurationProperties** 注解, 给定前缀, 属性名保持一致, 即可自动注入. 先添加依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor<artifactId>
</dependency>

AliOSSConfig 如下

@Data
@Component
@ConfigurationProperties(prefix="aliyun.oss")
public class AliOSSConfig{
    private String endpoint;
    private String accessKeyId;
    private String accessKeySecret;
    private String bucketName;
}