快速添加二维码开源组件
这是一个方便Java-web快速开发的一个小工具,我们仅需两个参数就可以向前端返回对应的二维码。
前言
这个组件来源于项目中有一个这样的功能:扫码添加好友。(下图为组件Demo实现)
这是一个很常见的功能,大部分朋友也都可以实现,就是将类似Token这样的用户随机生成且唯一的标签转换为二维码,再扫码的时候由前端获取并向后台请求,借助Token显示好友信息,并由用户决定是否添加好友。
在做项目架构设计的时候,临近周五,所以抽了时间,敲敲代码,实现了这个功能,但是为了以后的便捷使用,自己也将功能模块抽成一个小组件。
在这里突然提一下(题外话),周末看书时突然觉得这句话很有道理,能够减少架构师与程序员之间的沟通成本将会大大缩短项目的开发周期,一个懂得底层代码实现的架构师,他或许对项目的程序员更了解,甚至在设计的时候就已经在构思如何写底层代码,本着这个思路,也硬是把模块抽出来。
流程与功能
流程大致上面已经说过了,而且也比较简单,主要时如何考虑到以后的复用。如果是一个工具组件的话,那么一定不能仅仅针对于我的业务来说。
我尽可能的加了一层封装,让我们在业务层使用的时候方便一点。
我们仅需要在控制层或者服务层,通过Autowired注入这个工具Bean,并调用create方法,你仅需要专注于你想要传入的内容与对这个二维码的命名。
而相应的配置我都放在了application.yml
qrcode:
handler: "/upload/**" #前端资源监听路径
location: "file:E:/img/" #资源存放父目录
parents: "E:\\img/" #资源存放父目录
suffixname: ".png" #生成图片的后缀名称 默认
format: "png" #生成图片的格式 默认
width: 300 #二维码的宽 默认
height: 300 #二维码的高 默认
如上配置是你需要在application.yml中去配置,不过你可能只需要添加前三项,后面的都做了默认参数设定,这里需要注意的是二维码格式默认为QRCode。
而对于业务层就仅仅需要调用就好了。
/**
* 获取个人二维码
* @param name
* @return
*/
@PostMapping("/code")
public ResultVO code(@RequestParam("name") String name){
String path = createQRCodeUtil.create(name,name);
log.info(path);
return ResultVoUtil.success(path);
}
工具将会自动返回图片路径,而前端仅需要在路径前缀加一开始在application.yml中的handler。如下是小程序中的图片请求加载js
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
console.log(options);
code.code(options.name,(res)=>{
this.setData({
img:'http://192.168.1.121:8080/upload/'+res.data
})
})
}
扩展与升级
这是一个很简单的版本,如果业务增加,它应该具备更加丰富的API,甚至符合各种各样的业务。但是你的第一个版本已经完成了,甚至你可以在项目中使用这样一个组件。开发几小时,但是发布到Maven中央仓库倒是花了我一天时间,之前没有类似的经验,所以提交的时候出了些问题,一直没有提交上去,索性整改后就成功了,现在也可以在Maven搜索中看到这个工具组件。
这里更多想说的是,你不需要做到很好的一个项目,但是如果你想要开源一个小组件,主要一两天就可以了。
GitHub
项目地址:add-code
你可以这样使用:
<dependency>
<groupId>com.github.UncleCatMySelf</groupId>
<artifactId>add-code</artifactId>
<version>1.0</version>
</dependency>