最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot2 整合MinIO中間件實現(xiàn)文件便捷管理功能

 更新時間:2020年07月28日 08:41:59   作者:知了一笑  
這篇文章主要介紹了SpringBoot2 整合MinIO中間件,實現(xiàn)文件便捷管理,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

本文源碼:GitHub·點這里 || GitEE·點這里

一、MinIO簡介

MinIO是為了高性能和亞馬遜S3 API而設(shè)計的。MinIO非常適合對安全要求嚴格的大型私有云環(huán)境,在各工作負載下可保證高可用。

1、基礎(chǔ)描述

MinIO是一個開源的對象存儲服務(wù)。適合于存儲大容量非結(jié)構(gòu)化的數(shù)據(jù),例如圖片、視頻、日志文件、備份數(shù)據(jù)和容器/虛擬機鏡像等,而一個對象文件可以是任意大小,從幾kb到最大5T不等。

MinIO是一個非常輕量的服務(wù),可以很簡單的和其他應(yīng)用的結(jié)合,類似 NodeJS, Redis 或者 MySQL。

2、存儲機制

MinIO使用按對象的嵌入式擦除編碼保護數(shù)據(jù),該編碼以匯編代碼編寫,可提供最高的性能。MinIO使用Reed-Solomon代碼將對象劃分為n/2個數(shù)據(jù)和n / 2個奇偶校驗塊-盡管可以將它們配置為任何所需的冗余級別。 這意味著在12個驅(qū)動器設(shè)置中,將一個對象分片為6個數(shù)據(jù)和6個奇偶校驗塊。即使丟失了多達5個((n/2)–1)個驅(qū)動器(無論是奇偶校驗還是數(shù)據(jù)),仍然可以從其余驅(qū)動器可靠地重建數(shù)據(jù)。MinIO的實現(xiàn)可確保即使丟失或無法使用多個設(shè)備,也可以讀取對象或?qū)懭胄聦ο蟆W詈?,MinIO的擦除代碼位于對象級別,并且可以一次修復(fù)一個對象。

二、MinIO環(huán)境搭建

1、安裝包下載

https://dl.min.io/server/minio/release/linux-amd64/minio

建議使用某雷下載,速度會快點,下載包上傳到/opt/minioconfig/run目錄下。

2、創(chuàng)建數(shù)據(jù)存儲目錄

mkdir -p /data/minio/data

3、服務(wù)啟動

啟動并指定數(shù)據(jù)存放地址

/opt/minioconfig/run/minio server /data/minio/data/

輸出日志

Endpoint:  http://localhost:9000  http://127.0.0.1:9000   
AccessKey: minioadmin
SecretKey: minioadmin

這里就是登錄地址和賬號密碼。

三、整合SpringBoot環(huán)境

1、基礎(chǔ)依賴

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
 <groupId>io.minio</groupId>
 <artifactId>minio</artifactId>
 <version>3.0.12</version>
</dependency>

2、基礎(chǔ)配置

配置要素:地址和端口,登錄名,密碼,HTML存儲桶,圖片存儲桶。

minio:
 endpoint: http://192.168.72.133:9000
 accessKey: minioadmin
 secretKey: minioadmin
 bucketNameHtml: html
 bucketNameImage: image

文件上傳之后,可以基于文件地址直接訪問,但是需要在MinIO中配置文件的讀寫權(quán)限:

3、配置參數(shù)類

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

 private String endpoint ;
 private String accessKey ;
 private String secretKey ;
 private String bucketNameHtml ;
 private String bucketNameImage ;
 // 省略 get 和 set方法
}

4、基于MinIO配置類

封裝MinIO客戶端連接工具,文件上傳的基礎(chǔ)方法,返回文件在MinIO服務(wù)上的URL地址。

import io.minio.MinioClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;

@Component
public class MinIOConfig {

 private static final Logger LOGGER = LoggerFactory.getLogger(MinIOConfig.class) ;

 @Resource
 private ParamConfig paramConfig ;

 private MinioClient minioClient ;

 /**
 * 初始化 MinIO 客戶端
 */
 @PostConstruct
 private void init(){
 try {
  minioClient = new MinioClient(paramConfig.getEndpoint(),
      paramConfig.getAccessKey(),
      paramConfig.getSecretKey());
 } catch (Exception e) {
  e.printStackTrace();
  LOGGER.info("MinIoClient init fail ...");
 }
 }

 /**
 * 上傳 <html> 頁面
 */
 public String uploadHtml (String fileName, String filePath) throws Exception {
 minioClient.putObject(paramConfig.getBucketNameHtml(),fileName,filePath);
 return paramConfig.getEndpoint()+"/"+paramConfig.getBucketNameHtml()+"/"+fileName ;
 }

 /**
 * 上傳 <img> 圖片
 */
 public String uploadImg (String imgName, String imgPath) throws Exception {
 minioClient.putObject(paramConfig.getBucketNameImage(),imgName,imgPath);
 return paramConfig.getEndpoint()+"/"+paramConfig.getBucketNameImage()+"/"+imgName ;
 }
}

5、服務(wù)實現(xiàn)

提供兩個基礎(chǔ)方法:HTML和圖片上傳,存儲在不同位置。

import com.minio.file.config.MinIOConfig;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;

@Service
public class UploadServiceImpl implements UploadService {

 @Resource
 private MinIOConfig minIOConfig ;

 // 上傳 <html> ,返回服務(wù)器地址
 @Override
 public String uploadHtml(String fileName, String filePath) throws Exception {
 return minIOConfig.uploadHtml(fileName,filePath);
 }

 // 上傳 <img> ,返回服務(wù)器地址
 @Override
 public String uploadImg(String imgName, String imgPath) throws Exception {
 return minIOConfig.uploadImg(imgName,imgPath);
 }
}

上傳之后,基于瀏覽器訪問接口返回的url,查看效果:

四、源代碼地址

GitHub·地址
https://github.com/cicadasmile/middle-ware-parent
GitEE·地址
https://gitee.com/cicadasmile/middle-ware-parent

到此這篇關(guān)于SpringBoot2 整合MinIO中間件實現(xiàn)文件便捷管理功能的文章就介紹到這了,更多相關(guān)SpringBoot2 整合MinIO中間件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mybatis-Plus?sum聚合函數(shù)及按日期查詢并求和的方式詳解

    Mybatis-Plus?sum聚合函數(shù)及按日期查詢并求和的方式詳解

    這篇文章主要介紹了Mybatis-Plus sum聚合函數(shù)及按日期查詢并求和,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • SpringBoot實現(xiàn)Thymeleaf驗證碼生成

    SpringBoot實現(xiàn)Thymeleaf驗證碼生成

    本文使用SpringBoot實現(xiàn)Thymeleaf驗證碼生成,使用后臺返回驗證碼圖片,驗證碼存到session中后端實現(xiàn)校驗,前端只展示驗證碼圖片。感興趣的可以了解下
    2021-05-05
  • Java利用Phantomjs實現(xiàn)生成圖片的功能

    Java利用Phantomjs實現(xiàn)生成圖片的功能

    這篇文章主要介紹了Java利用Phantomjs實現(xiàn)生成圖片的功能,文中講解非常細致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • Java線程優(yōu)先級和守護線程原理解析

    Java線程優(yōu)先級和守護線程原理解析

    這篇文章主要介紹了Java線程優(yōu)先級和守護線程原理解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • SpringCloud啟動eureka server后,沒報錯卻不能訪問管理頁面(404問題)

    SpringCloud啟動eureka server后,沒報錯卻不能訪問管理頁面(404問題)

    這篇文章主要介紹了SpringCloud啟動eureka server后,沒報錯卻不能訪問管理頁面(404問題),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Spring?Cloud?Gateway動態(tài)路由Apollo實現(xiàn)詳解

    Spring?Cloud?Gateway動態(tài)路由Apollo實現(xiàn)詳解

    這篇文章主要為大家介紹了Spring?Cloud?Gateway動態(tài)路由通過Apollo實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • java 微信隨機紅包算法代碼實例

    java 微信隨機紅包算法代碼實例

    這篇文章主要介紹了java 微信隨機紅包算法的相關(guān)資料,并附實例代碼,需要的朋友可以參考下
    2016-10-10
  • SpringMVC常用注解載入與處理方式詳解

    SpringMVC常用注解載入與處理方式詳解

    這篇文章主要介紹了SpringMVC常用注解載入的方式和處理的方式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • idea普通javaweb項目如何部署到tomcat(讀取web.xml文件)

    idea普通javaweb項目如何部署到tomcat(讀取web.xml文件)

    這篇文章主要介紹了idea普通javaweb項目如何部署到tomcat(讀取web.xml文件),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java中Lock鎖基本使用方法詳解

    Java中Lock鎖基本使用方法詳解

    鎖是一種工具,用于控制對共享資源的訪問Lock和synchronized是最常見的兩個鎖,他們都能夠達到線程安全的目錄,這篇文章主要給大家介紹了關(guān)于Java中Lock鎖基本使用方法詳解的相關(guān)資料,需要的朋友可以參考下
    2023-11-11

最新評論

获嘉县| 崇阳县| 内江市| 江陵县| 玉龙| 大宁县| 阳高县| 阳山县| 封开县| 揭阳市| 弋阳县| 康定县| 理塘县| 隆子县| 汶川县| 左贡县| 长白| 日土县| 安达市| 樟树市| 横峰县| 云霄县| 泽州县| 吉木萨尔县| 汕尾市| 万山特区| 商南县| 娱乐| 青海省| 青田县| 临安市| 海安县| 林周县| 渭南市| 京山县| 保靖县| 宾阳县| 陵水| 都匀市| 安泽县| 浠水县|