1、新建一个maven项目
2、创建包:创建的包一定要带有config
3、添加依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.osy</groupId>
<artifactId>minio-spring-boot-start</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 阿里maven -->
<repositories>
<repository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<!--自动装配必须包依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>2.3.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
<version>2.3.1.RELEASE</version>
</dependency>
<!--自动装配必须包依赖-->
<!--minio 依赖-->
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>3.0.10</version>
</dependency>
</dependencies>
</project>
4、创建类:MinioAutoConfiguration,MinioProperties,MinioUtils
package com.osy.config;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
@EnableConfigurationProperties(MinioProperties.class)
public class MinioAutoConfiguration {
private MinioProperties minioProperties;
// 通过构造方法将MinioProperties注入进来
public MinioAutoConfiguration(MinioProperties minioProperties){
notNull(minioProperties.getUrl() == null, "url不能为空");
notNull(minioProperties.getAccessKey() == null, "accessKey不能为空");
notNull(minioProperties.getSecretKey() == null, "secretKey不能为空");
notNull(minioProperties.getBuckets() == null, "buckets不能为空");
this.minioProperties = minioProperties;
}
@ConditionalOnMissingBean(MinioUtils.class)
@Bean
public MinioUtils minioUtils(){
return new MinioUtils(minioProperties);
}
public static void notNull(boolean expression, String msg){
if(expression){
throw new NullPointerException(msg);
}
}
}
package com.osy.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = MinioProperties.MINIO_PREFIX)
public class MinioProperties {
public static final String MINIO_PREFIX = "minio";
private String url;
private String accessKey;
private String secretKey;
private String buckets;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getAccessKey() {
return accessKey;
}
public void setAccessKey(String accessKey) {
this.accessKey = accessKey;
}
public String getSecretKey() {
return secretKey;
}
public void setSecretKey(String secretKey) {
this.secretKey = secretKey;
}
public String getBuckets() {
return buckets;
}
public void setBuckets(String buckets) {
this.buckets = buckets;
}
}
package com.osy.config;
import com.sun.deploy.util.ArrayUtil;
import io.minio.MinioClient;
import io.minio.errors.*;
import org.springframework.util.StringUtils;
import org.xmlpull.v1.XmlPullParserException;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* 这个类目前只写了初始化客户端以及添加存储桶的方法。
* 放值和取值没有写
* 这里主要讲自动装配
*/
public class MinioUtils {
private MinioClient minioClient;
private List<String> buckets = new ArrayList<String>();
public MinioUtils(MinioProperties minioProperties) {
try {
initMinioClient(minioProperties);
addBuckets(StringUtils.split(",", minioProperties.getBuckets()));
makeBuckets();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("MinioClient初始化异常");
}
}
/**
* 添加存储桶
* @param buckets
*/
public void addBuckets(String... buckets) {
this.buckets.addAll(Arrays.asList(buckets));
}
/**
* 添加存储桶
* @param buckets
*/
public void addBucketsAndMake(String... buckets) {
this.buckets.addAll(Arrays.asList(buckets));
try {
makeBuckets();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("创建存储桶异常");
}
}
/**
* 初始化客户端
* @param minioProperties
*/
private void initMinioClient(MinioProperties minioProperties) throws InvalidPortException, InvalidEndpointException {
minioClient = new MinioClient(minioProperties.getUrl(), minioProperties.getAccessKey(), minioProperties.getSecretKey());
}
/**
* 创建存储桶
*/
public void makeBuckets() throws NoSuchAlgorithmException, IOException, InvalidKeyException, XmlPullParserException, InsufficientDataException, ErrorResponseException, InvalidBucketNameException, InternalException, NoResponseException, RegionConflictException {
for (String bucket : buckets) {
boolean isExist = false;
isExist = minioClient.bucketExists(bucket);
if (!isExist) {
minioClient.makeBucket(bucket);
}
}
}
}
5、在resources下面创建META-INF/spring.factories文件,指定我们的自动装配类。
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.osy.config.MinioAutoConfiguration
6、打成jar包: