情景假设我们要项目需要修改配置信息 配置信息可以放在源码中 也可以放在application.yml 文件中 如果放在源码中我们要修改就得修改源码然后重新编译打包发布 所以配置信息放入application.yml 文件中比较好 但是要如何获取 application.yml 文件的信息呢?获取application.yml的配置信息
大体有两种方法可以获取 以下面为例

假设我要获取yml文件中的一下信息

1
2
3
4
5
minio:
endpoint: http://locahost:9000
access-key: minioadmin
secret-key: minioadmin
bucket-name: lovehouse

@value() 通过这个注解实现如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package com.orchids.springmybatisplus.common.minio;

import io.minio.MinioClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
* @Author qwh
* @Date 2024/6/1 9:48
*/
@Configuration
public class MinioConfiguration {
@Value("${minio.endpoint}")
private String endpoint;
@Value("${minio.secretKey}")
private String accessKey;
@Value("${minio.accessKey}")
private String secretKey;
@Value("${minio.bucketName}")
private String bucketName;

@Bean
public MinioClient minioClient(){
return MinioClient.builder().endpoint(endpoint).credentials(accessKey,secretKey).build();
}

}

面向对象思想 将配置内容抽象成一个类 具体实现如下
  1. 类名必须为这种格式

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    package com.orchids.springmybatisplus.common.minio;

    import lombok.Data;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.boot.context.properties.EnableConfigurationProperties;

    /**
    * @Author qwh
    * @Date 2024/6/1 9:54
    */
    @Data
    @ConfigurationProperties(prefix = "minio")
    public class MinioProperties {

    private String endpoint;

    private String accessKey;

    private String secretKey;

    private String bucketName;
    }

    这里@ConfigurationProperties 注解会报错 解决方法有两种
    当较少xxxproperties类时在对应configuraton 类中添加注解@EnableConfigurationProperties @EnableConfigurationProperties(MinioProperties.class)
    当有很多时可以添加@ConfigurationPropertiesScan 注解 注解内容为包名
    @ConfigurationPropertiesScan(“com.orchids.lovehouse.common.minio”)

  2. 编写对应的配置类

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    package com.orchids.lovehouse.common.minio;

    import io.minio.MinioClient;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
    import org.springframework.boot.context.properties.EnableConfigurationProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;

    /**
    * @Author qwh
    * @Date 2024/6/1 9:29
    */
    @Configuration
    @EnableConfigurationProperties(MinioProperties.class)
    //@ConfigurationPropertiesScan("com.common.minio")
    public class MinioConfiguration {
    @Autowired
    private MinioProperties properties;
    @Bean
    public MinioClient minioClient(){
    return MinioClient.builder().endpoint(properties.getEndpoint()).credentials(properties.getAccessKey(),properties.getSecretKey()).build();
    }
    }