詳細內(nèi)容請回顧https://blog.51cto.com/yerikyu/2361380
本文主要是介紹,如何通過jHipster快速搭建網(wǎng)絡云盤服務。
我們使用jHipster構建一個web服務是一件簡單便捷的事情,啟動起來也很舒服的,如下圖所示,通過命令jhipster就可以啟動該框架為我們提供創(chuàng)建項目的功能

之后是進行項目名稱的設置,還有包名,認證方式等配置設置。不懂的話,建議一直回車選擇默認配置,之后在數(shù)據(jù)庫選型這一欄,由于項目需要,這里我們選擇MongoDB。

之后我們還需要選擇啟動倉庫,筆者習慣使用gradle

其他的按照默認配置就行啦,之后還是一樣的 ,一路回車暴擊,等待項目創(chuàng)建完成,你們會觀察到創(chuàng)建項目中,不斷的新建文件以及相關依賴的進度條,等待創(chuàng)建完成。
這樣就形成了我們的構建的web服務了,服務可以啟動了,然而畢竟是通過框架搭建起來的web服務還是比較簡單的,我們需要再進行個性化開發(fā)。在圖中我們可以看到一個清晰的后端服務框架

因為我們在創(chuàng)建項目的過程中,已經(jīng)明確說明需要用到mangodb,因此,框架已經(jīng)為我們提供了mangodb數(shù)據(jù)庫的docker-compose文件,我們可以直接使用的,不過此時docker container的數(shù)據(jù)是不會保存的,如果我們重啟docker服務,將會導致數(shù)據(jù)丟失,因此我們需要為該容器掛載一個持久化卷,修改下docker-compose文件即可,設置鏡像自動重啟

version: \\\'2\\\'
services:
    utils-mongodb:
        image: mongo:4.0.2
        ports:
            - 27017:27017
        volumes:
            - ~/volumes/jhipster/utils/mongodb/:/data/db/
        restart: always

準備工作完成之后,我們接下來是開始網(wǎng)盤功能的簡單開發(fā)了,在jHipster中,對象之間的關系可以通過JDLJHipster Domain Language來表達,其表達方式比較簡單,這個就是一個簡單的網(wǎng)盤邏輯關系設計

entity UploadFile {
    uploadTime String
}

entity DownloadFile {
   name String
    downloadTime String
    count Instant
}

relationship OneToOne {
   UploadFile{name} to DownloadFile
}

// Set pagination options
paginate * with infinite-scroll
paginate * with pagination

dto * with mapstruct

// Set service options to all except few
service all with serviceImpl
// Set an angular suffix
angularSuffix * with smallestpan

設計完成之后使用命令jHipster import-jdl ./jdl/p1.jdl 對該文件進行編譯,執(zhí)行,至于具體原理本文不作深入分析,下次有機會再說:)
執(zhí)行之后是需要生成數(shù)據(jù)庫mapper層來完成對數(shù)據(jù)的自動寫入讀出功能
./gradew build

生成結果如下

接下來是對service進行開發(fā),基于前面jdl自動生成的DTO、impl等文件,我們需要的就是對接口進行調(diào)通,不妨開發(fā)一個接口類,實現(xiàn)上傳和下載,網(wǎng)盤不就是這樣嘛,一個遠端的存儲設備,提供上傳和下載功能嘛

@Service
public class FileServiceImpl implements FileService {

    @Override
    public Object upload(Object object) {
        return null;
    }

    @Override
    public Object download(Object object) {
        return null;
    }
}

這里我們主要使用spring-cloud框架中的Grid這個組件,實現(xiàn)ORM的功能,完成對mongodb數(shù)據(jù)庫的寫入寫出,提高我們的開發(fā)效率,不過這樣做從一定程度上降低代碼的運行效率,這個優(yōu)化思路并不是本文介紹內(nèi)容

@Service
public class GridfsService {

    @Autowired
    private MongoDbFactory mongodbfactory;

    /**
     * 插入文件
     * @param file
     * @return
     */
    public GridFSInputFile save(MultipartFile file){

        GridFS gridFS = new GridFS(mongodbfactory.getLegacyDb());

        try{

            InputStream in = file.getInputStream();

            String name = file.getOriginalFilename();

            GridFSInputFile gridFSInputFile = gridFS.createFile(in);

            gridFSInputFile.setFilename(name);

            gridFSInputFile.setContentType(file.getContentType());

            gridFSInputFile.save();
            return gridFSInputFile;
        }
        catch (Exception e){}

        return null;

    }

    /**
     * 據(jù)id返回文件
     */
    public GridFSDBFile getById(ObjectId id){
        DBObject query  = new BasicDBObject(_id, id);
        GridFS gridFS = new GridFS(mongodbfactory.getLegacyDb());
        GridFSDBFile gridFSDBFile = gridFS.findOne(query);
        return gridFSDBFile;

    }

    /**
     * 刪除
     * @param id
     */
    public void remove(String id) {
        GridFS gridFS = new GridFS(mongodbfactory.getLegacyDb());
        gridFS.remove(new ObjectId(id));
    }

    public void setMongodbfactory(MongoDbFactory mongodbfactory) {
        this.mongodbfactory = mongodbfactory;
    }
}

好了,開發(fā)至此,代碼就已然開發(fā)完畢了,可以正式啟用這個超簡潔的小小盤,至于說接口格式,網(wǎng)絡請求路徑等這些,jHipster都已經(jīng)為你自動生成好了,就在web.rest里面,各位看官不妨閱讀下源碼,倒是簡潔易懂呢,由于這個只是后臺頁面,所以可以通過postman這樣的調(diào)試工具對這個功能進行測試即可,后面有機會在來介紹該頁面的前端開發(fā)

使用jHipster這樣的框架輔助我們開發(fā)給我們減少了很多工作量,妥妥提升我們開發(fā)的幸福感:)

代碼僅供參考,不妨來個star:https://github.com/Yerikshu/smallestpan
謝啦~~

文章參考:
jHipster官方網(wǎng)站:https://www.jhipster.tech
Grid介紹:https://www.baeldung.com/spring-data-mongodb-gridfs

更多關于云服務器域名注冊,虛擬主機的問題,請訪問三五互聯(lián)官網(wǎng):m.shinetop.cn

贊(0)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享網(wǎng)絡內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。郵箱:3140448839@qq.com。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明出處:三五互聯(lián)知識庫 » 網(wǎng)盤進化史就這樣(下)——功能實現(xiàn)

登錄

找回密碼

注冊

主站蜘蛛池模板: 在线免费播放av观看| 一区二区三区四区五区自拍| 中文字幕人妻日韩精品| 国产一区二区三区尤物视频 | 精品国产亚洲av麻豆特色| 色综合久久久久综合体桃花网| 亚洲一区二区三区蜜桃臀| 亚洲国产成人资源在线| 国产日韩精品中文字幕| 爆乳喷奶水无码正在播放| 乱人伦中文字幕成人网站在线| 亚洲精品有码在线观看| 亚洲精品一二三伦理中文| 国产成人免费ā片在线观看| 亚洲精品一区国产精品| 亚洲精品中文字幕尤物综合 | 少妇人妻偷人精品一区二| 免费一区二区无码东京热| 伊人天天久大香线蕉av色| 亚洲人妻中文字幕一区| 国产呻吟久久久久久久92| 亚洲悠悠色综合中文字幕| 亚洲美免无码中文字幕在线| 国精产品一区一区三区mba下载| 少妇激情一区二区三区视频小说| 国产精品亚洲第一区在线| 国产欧美精品aaaaaa片| 久久精品国产精品亚洲精品| 国产在线精品第一区二区| 福利一区二区在线播放| 17岁日本免费bd完整版观看| 337p粉嫩大胆色噜噜噜| 91网站在线看| 撕开奶罩揉吮奶头高潮AV| 亚洲高清免费在线观看| 黑人巨茎大战欧美白妇| 日本一码二码三码的区分| 亚洲成av人片无码迅雷下载| 亚洲综合一区二区国产精品| 久久自己只精产国品| 日本肥老妇色xxxxx日本老妇 |