官网地址:https://www.renren.io/community/project
renren-fast | Java快速开发平台
- 一个轻量级的Java快速开发平台,能快速开发项目并交付【接私活利器】
- 完善的XSS防范及脚本过滤,彻底杜绝XSS攻击
- 实现前后端分离,通过token进行数据交互
- 实现管理员列表、角色管理、菜单管理、定时任务、参数管理、系统日志、文件上传(云存储)等功能
前言
公司以renren-fast3.0为基础,搭建自己的架构,总体上是使用spring data代替了mybatis、封装了部分工具类(引入hutoool能实现大部分)、vue升级、封装查询方法,模块拆分、让整个框架更易于开发。现在的情况是新项目进来,基本的业务模块不怎么需要写,特殊业务模块的增删查改继承BaseService,复制一份改一下就好了。看着这些代码,不禁想到我们都在搬砖,只是工地的砖更加烫手。
优化
我一直觉得这个框架设计的不错,前后端分离,各种功能都比较全,直到有一次偶然的面试,我才发现这个问题还是有的。埋着头一直搬,是没有什么长进的,还是要多看看别人怎么搬的。
异步方法
spring boot 本身具有异步注解,可以@EnableAsync开启,在方法上加上@Async实现异步。无论是接口日志、业务日志、其他方法都可以加上,常用于AOP。
Redis缓存
整个项目中缓存的使用是手机验证码、还有部分常量,减少访问时间。没有过多的考虑性能问题,在最开始的版本,接口访问带着token过来,会拦截一次,访问数据库是否存在、再查一次数据库访问是否拥有此权限。en,意思就是每次需要验证的接口会有两次查询操作。当然解决办法也很简单,token本身就具有时效性,将token存入redis中,省下一次查询,将用户的权限也存入redis,每次直接去redis中获取,又提升了性能了。随之带来的问题有两个:1、本身的数据是数据库中存的,因为有时候需要手动改掉,此时没有办法去更新已存的rediis中的数据,解决办法是:写一个接口去更新数据库数据和redis数据。 2、Redis缓存穿透、缓存雪崩、缓存击穿、安全性问题,redis安全性可以配置密码并且将yml中的明文密码加密。其他的我没有解决过,我参与过所有项目用户量不大,只能发个网上的链接、凑凑字数、忽悠一下大家。参考链接: https://my.oschina.net/u/3434392/blog/3012132
后记
随着业务的扩展、技术的发展,现在的框架已经不太能够满足现在的招标了。微服务的迅速开发架构正在搭建中,参考了开源项目PigX,后面针对性的分享一下。