SpringBoot配置文件优化

SpringBoot配置文件优化

  • 问题:

@Component
public class AliOSSUtils {

    private String endpoint = "https://oss-cn-shanghai.aliyuncs.com";
    private String accessKeyId = "LTAI5tFsWn7sUXf8XfvJgXgk";
    private String accessKeySecret = "jXSHJzb1IS7iZr6ELaH68TZArr0rgf";
    private String bucketName = "myjava161";

在上述的案例中,关于阿里云的相关配置信息,我们是直接写死在java代码中了,这样做,功能虽然实现了,但是是不便于维护和管理的。 为了解决这个问题呢,我们可以将其配置在properties的配置文件中。如下:

#自定义的阿里云OSS配置信息

aliyun.oss.endpoint=替换为自己的

aliyun.oss.accessKeyId=替换为自己的

aliyun.oss.accessKeySecret=替换为自己的

aliyun.oss.bucketName=替换为自己的

注:springBoot中的配置信息是key,value形式的,其中key是可以自己定义的,但是要保证见名之意

那我们将配置信息搞好后如何拿出来使用呢?

配置在了配置文件之后,如果我们想在java代码中使用。 我们可以直接通过@Value注解,就可以加载并读取配置文件中的配置项,具体形式为:@Value("${key}")。如下:

@Component
public class AliOSSUtils {
    @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;

  • yml配置文件

前面我们一直使用springboot项目创建完毕后自带的application.properties进行属性的配置,那其实呢,在springboot项目中提供了多种属性的配置方式:

语法:

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

配置改造:

将原来使用的application.properties 改名为 _application.properties(名字随便一换,springboot就加载不到了)。然后创建新的配置文件 application.yml,然后再将application.properties 改造称为 application.yml。

改造后效果如下:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/tlias
    username: root
    password: 123456
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 100MB
mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: true
  mapper-locations: mappers/*xml
  type-aliases-package: com.itheima.pojo
server:
  port: 8080
aliyun:
  oss:
    endpoint: https://oss-cn-shanghai.aliyuncs.com
    accessKeyId: LTAI5tFsWn7sUXf8XfvJgXgk
    accessKeySecret: jXSHJzb1IS7iZr6ELaH68TZArr0rgf
    bucketName: myjava161

问题分析:

我们在 application.properties 或者 application.yml 中配置了自定义的信息之后,如果需要在 java 需要注入这些属性,我们直接直接通过@Value注解来进行注入,这种方式没有问题。 但是如果说需要注入的属性较多,我们写起来会比较繁琐,此时我们可以通过 @ConfigurationProperties 来简化。

  • @ConfigurationProperties注解
  1. 定义实体类,用于封装需要注入的属性。

import lombok.Data;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.stereotype.Component;

@Data

@Component

@ConfigurationProperties(prefix = "aliyun.oss") //指定配置文件

public class AliOSSProperties {

    private String endpoint;

    private String accessKeyId;

    private String accessKeySecret;

    private String bucketName;

}

2). 在工具类中,注解注入上述的bean对象,然后调用get方法就可以获取到各个属性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值