package com.ard.config; import com.ard.utils.SpringTool; import io.minio.MinioClient; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.config.YamlPropertiesFactoryBean; import org.springframework.context.annotation.Bean; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.integration.channel.DefaultHeaderChannelRegistry; import org.springframework.integration.channel.PublishSubscribeChannel; import org.springframework.stereotype.Component; import java.io.IOException; import java.util.Properties; /** * @Description: * @ClassName: MinioClientSingleton * @Author: 刘苏义 * @Date: 2023年05月18日9:32 * @Version: 1.0 **/ @Slf4j(topic = "minio") @Component public class MinioClientSingleton { public static String domainUrl; private static String accessKey; private static String secretKey; private volatile static MinioClient minioClient; static { domainUrl = SpringTool.getYmlInfo("minio.endpoint"); accessKey = SpringTool.getYmlInfo("minio.accessKey"); secretKey = SpringTool.getYmlInfo("minio.secretKey"); log.info("minio信息:" + domainUrl + "(" + accessKey + "/" + secretKey + ")"); } /** * 获取minio客户端实例 * * @return {@link MinioClient} */ public static MinioClient getMinioClient() { if (minioClient == null) { synchronized (MinioClientSingleton.class) { if (minioClient == null) { minioClient = MinioClient.builder() .endpoint(domainUrl) .credentials(accessKey, secretKey) .build(); } } } return minioClient; } @Bean public PublishSubscribeChannel errorChannel() { return new PublishSubscribeChannel(); } @Bean public DefaultHeaderChannelRegistry integrationHeaderChannelRegistry() { return new DefaultHeaderChannelRegistry(); } }