创建AmazonS3的Bean

Java 中使用 MinIO 的技术文章大纲

引言
  • MinIO 简介:Minio是一个开源的对象存储服务器,兼容Amazon S3 API。它专为私有云和混合云环境设计,支持存储和管理非结构化数据(如照片、视频、日志文件等)。
  • 高性能:采用分布式架构,支持横向扩展,适合高并发场景。
  • 轻量级:单二进制文件部署,资源占用低,启动速度快。
  • 兼容性:完全兼容Amazon S3 API,可无缝集成现有S3工具和SDK。
  • 数据安全:支持加密传输(SSL/TLS)、客户端加密和服务端加密。
  • 多模式部署:支持单机、分布式(纠删码模式)和Kubernetes部署。

Windows安装minio

minio的下载地址:MinIO Download Serverhttps://dl.min.io/server/minio/release/

在minio.exe所在的路径下打开cmd执行命令

minio.exe server D:\software\minio --console-address ":9000" --address ":9090"

打开浏览器输入http://localhost:9000/

环境准备
  • MinIO 服务器部署
  • Java 项目依赖引入(连接 AWS S3 官方,用 AmazonS3 接口)
<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-s3</artifactId>
    <version>1.12.263</version>
</dependency>

基础操作

1.配置文件

minio:
  endpoint: http://*.*.*.*:****
  access-key: minioadmin
  access-secret: minioadmin
  bucket: minio-upload

2.配置文件读取

@Data
@Component
@ConfigurationProperties(prefix = "minio")
public class MinioProperties {

    @Value("endpoint")
    private String endpoint;

    @Value("access-key")
    private String accessKey;

    @Value("access-secret")
    private String accessSecret;

    @Value("bucket")
    private String bucket;
}

3.创建AmazonS3的Bean

@Configuration
public class AmazonS3Config {

    @Resource
    private MinioProperties minioProperties;

    @Bean(name = "amazonS3Client")
    public AmazonS3 amazonS3Client () {
        //设置连接时的参数
        ClientConfiguration config = new ClientConfiguration();
        //设置连接方式为HTTP,可选参数为HTTP和HTTPS
        config.setProtocol(Protocol.HTTP);
        //设置网络访问超时时间
        config.setConnectionTimeout(5000);
        config.setUseExpectContinue(true);
        AWSCredentials credentials = new BasicAWSCredentials(minioProperties.getAccessKey(), minioProperties.getAccessSecret());
        //设置Endpoint
        AwsClientBuilder.EndpointConfiguration end_point = new AwsClientBuilder.EndpointConfiguration(minioProperties.getEndpoint(), Regions.US_EAST_1.name());
        AmazonS3 amazonS3 = AmazonS3ClientBuilder.standard()
                .withClientConfiguration(config)
                .withCredentials(new AWSStaticCredentialsProvider(credentials))
                .withEndpointConfiguration(end_point)
                .withPathStyleAccessEnabled(true).build();
        return amazonS3;
    }

}

可以在实现类注入,然后就可以使用S3客户端对minio做文件的上传下载了

@Resource
private AmazonS3 amazonS3;

更多推荐