All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.hiboot.mcn.autoconfigure.minio.MinioProperties Maven / Gradle / Ivy

package cn.hiboot.mcn.autoconfigure.minio;

import io.minio.http.HttpUtils;
import okhttp3.OkHttpClient;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.util.unit.DataSize;

import java.time.Duration;
import java.util.concurrent.TimeUnit;

/**
 * minio配置项
 *
 * @author DingHao
 * @since 2021/6/28 22:03
 */
@ConfigurationProperties("minio")
public class MinioProperties {

    private static final Duration DEFAULT_TIMEOUT = Duration.ofMinutes(10);

    private String endpoint;

    private String accessKey;

    private String secretKey;

    /**
     * 默认bucket 不存在则新建
     */
    private String defaultBucketName;

    private String previewImageParameterName = "image";

    /**
     * 分块默认大小默认为10MB 最小值为5MB 最大值为5GB
     */
    private DataSize minMultipartSize = DataSize.ofMegabytes(10);

    /**
     * 预生成的url过期时间 默认6小时
     */
    private int expire = (int)TimeUnit.HOURS.toSeconds(6);

    /**
     * 上传方法
     */
    private String method = "PUT";

    private Pool pool = new Pool();

    private Client client = new Client();

    public String getEndpoint() {
        return endpoint;
    }

    public void setEndpoint(String endpoint) {
        this.endpoint = endpoint;
    }

    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 getDefaultBucketName() {
        return defaultBucketName;
    }

    public void setDefaultBucketName(String defaultBucketName) {
        this.defaultBucketName = defaultBucketName;
    }

    public String getPreviewImageParameterName() {
        return previewImageParameterName;
    }

    public void setPreviewImageParameterName(String previewImageParameterName) {
        this.previewImageParameterName = previewImageParameterName;
    }

    public DataSize getMinMultipartSize() {
        return minMultipartSize;
    }

    public void setMinMultipartSize(DataSize minMultipartSize) {
        this.minMultipartSize = minMultipartSize;
    }

    public int getExpire() {
        return expire;
    }

    public void setExpire(int expire) {
        this.expire = expire;
    }

    public String getMethod() {
        return method;
    }

    public void setMethod(String method) {
        this.method = method;
    }

    public Pool getPool() {
        return pool;
    }

    public void setPool(Pool pool) {
        this.pool = pool;
    }

    public Client getClient() {
        return client;
    }

    public void setClient(Client client) {
        this.client = client;
    }

    public static class Pool{

        private static final int DEFAULT_SIZE = Runtime.getRuntime().availableProcessors();

        private Integer core = DEFAULT_SIZE;

        private Integer max = DEFAULT_SIZE;

        private int queueSize = 10;

        private String threadName = "Upload";

        public int getCore() {
            return core;
        }

        public void setCore(int core) {
            this.core = core;
        }

        public int getMax() {
            return max;
        }

        public void setMax(int max) {
            this.max = max;
        }

        public int getQueueSize() {
            return queueSize;
        }

        public void setQueueSize(int queueSize) {
            this.queueSize = queueSize;
        }

        public String getThreadName() {
            return threadName;
        }

        public void setThreadName(String threadName) {
            this.threadName = threadName;
        }

    }

    public static class Client{
        /**
         * 连接服务器超时时间默认为10m
         */
        private Duration connectTimeout = DEFAULT_TIMEOUT;
        /**
         * 从服务器读取超时时间默认为10m
         */
        private Duration readTimeout = DEFAULT_TIMEOUT;
        /**
         * 写入服务器超时时间默认为10m
         */
        private Duration writeTimeout = DEFAULT_TIMEOUT;

        public Duration getConnectTimeout() {
            return connectTimeout;
        }

        public void setConnectTimeout(Duration connectTimeout) {
            this.connectTimeout = connectTimeout;
        }

        public Duration getReadTimeout() {
            return readTimeout;
        }

        public void setReadTimeout(Duration readTimeout) {
            this.readTimeout = readTimeout;
        }

        public Duration getWriteTimeout() {
            return writeTimeout;
        }

        public void setWriteTimeout(Duration writeTimeout) {
            this.writeTimeout = writeTimeout;
        }

        public OkHttpClient okHttpClient(){
            return HttpUtils.newDefaultHttpClient(getConnectTimeout().toMillis(), getWriteTimeout().toMillis(), getReadTimeout().toMillis());
        }

    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy