version: ‘2‘
services:
utils-mongodb:
image: mongo:4.0.2
ports:
- "27017:27017"
volumes:
- ~/volumes/jhipster/utils/mongodb/:/data/db/
restart: always
准备工作完成之后,我们接下来是开始网盘功能的简单开发了,在jHipster中,对象之间的关系可以通过JDLJHipster Domain Language
来表达,其表达方式比较简单,这个就是一个简单的网盘逻辑关系设计
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 对该文件进行编译,执行,至于具体原理本文不作深入分析,下次有机会再说:)
执行之后是需要生成数据库mapper层来完成对数据的自动写入读出功能./gradew build
生成结果如下
接下来是对service进行开发,基于前面jdl自动生成的DTO、impl等文件,我们需要的就是对接口进行调通,不妨开发一个接口类,实现上传和下载,网盘不就是这样嘛,一个远端的存储设备,提供上传和下载功能嘛
@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这个组件,实现ORM的功能,完成对mongodb数据库的写入写出,提高我们的开发效率,不过这样做从一定程度上降低代码的运行效率,这个优化思路并不是本文介绍内容
@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;
}
/**
* 据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;
}
}
好了,开发至此,代码就已然开发完毕了,可以正式启用这个超简洁的小小盘,至于说接口格式,网络请求路径等这些,jHipster都已经为你自动生成好了,就在web.rest里面,各位看官不妨阅读下源码,倒是简洁易懂呢,由于这个只是后台页面,所以可以通过postman这样的调试工具对这个功能进行测试即可,后面有机会在来介绍该页面的前端开发
使用jHipster这样的框架辅助我们开发给我们减少了很多工作量,妥妥提升我们开发的幸福感:)
代码仅供参考,不妨来个star:https://github.com/Yerikshu/smallestpan
谢啦~~
文章参考:
jHipster官方网站:https://www.jhipster.tech
Grid介绍:https://www.baeldung.com/spring-data-mongodb-gridfs
原文:https://blog.51cto.com/yerikyu/2367685