收起左侧

[JAVA] java程序员提高开发效率之 springboot layout

0
回复
[复制链接]
avatar
  • TA的每日心情
    qdsmile开心
    2024-7-7 17:56
  • 签到天数: 387 天

    [LV.9]铁杆吧粉

    3

    主题

    232

    帖子

    1234

    积分
    发表于 2021-8-19 09:15:17 | 显示全部楼层 |阅读模式
    通过平时项目开发的误区,最终总结出一个经验,那就是开发项目之前要选择一个好的框架,能使你的开发效率事半功倍。项目框架不是越复杂越好,而是满足自己条件即可。因为项目框架集成度越高对应依赖越多,项目效率越低。

           今天向大家推荐一个适合小项目的框架,本套框架满足项目基本需求,简单清洁没有任务冗余内容。如果大家集成其它功能仅仅添加依赖既可。也不需要对现有项目进行裁剪。项目一旦封账好裁剪极容易出现bug,因为每个框架师设计思想不同。

             项目springboot 完美整合springmvc + shiro + mybatis-plus +layout一套单体服务,注释丰富,上手容易,多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),可以直接作为一个后台快速上手的管理系统的脚手架。

    理系统功能
            1.用户管理 2.角色管理 3.部门管理 4.菜单管理 5.字典管理 6.业务日志 7.登录日志 8.监控管理 9.通知管理 10.代码生成。

    项目特点
    基于SpringBoot,简化了大量项目配置和maven依赖,让您更专注于业务开发,独特的分包方式,代码多而不乱。

    完善的日志记录体系,可记录登录日志,业务操作日志(可记录操作前和操作后的数据),异常日志到数据库,通过@BussinessLog注解和LogObjectHolder.me().set()方法,业务操作日志可具体记录哪个用户,执行了哪些业务,修改了哪些数据,并且日志记录为异步执行,详情请见@BussinessLog注解和LogObjectHolder,LogManager,LogAop类。

    利用beetl模板引擎对前台页面进行封装和拆分,使臃肿的html代码变得简洁,更加易维护。

    对常用js插件进行二次封装,使js代码变得简洁,更加易维护,具体请见webapp/static/js/common文件夹内js代码。

    利用ehcache框架对经常调用的查询进行缓存,提升运行速度,具体请见ConstantFactory类中@Cacheable标记的方法。

    controller层采用map + warpper方式的返回结果,返回给前端更为灵活的数据,具体参见com.stylefeng.guns.modular.system.warpper包中具体类。

    防止XSS攻击,通过XssFilter类对所有的输入的非法字符串进行过滤以及替换。

    简单可用的代码生成体系,通过SimpleTemplateEngine可生成带有主页跳转和增删改查的通用控制器、html页面以及相关的js,还可以生成Service和Dao,并且这些生成项都为可选的,通过ContextConfig下的一些列xxxSwitch开关,可灵活控制生成模板代码,让您把时间放在真正的业务上。

    控制器层统一的异常拦截机制,利用@ControllerAdvice统一对异常拦截,具体见com.stylefeng.guns.core.aop.GlobalExceptionHandler类。

    页面统一的js key-value单例模式写法,每个页面生成一个唯一的全局变量,提高js的利用效率,并且有效防止多个人员开发引起的函数名/类名冲突,并且可以更好地去维护代码。

    基于javabean方式的spring配置
            框架以简洁为核心,抛弃了传统的易错,臃肿xml配置,采用javabean的方式配置spring,简化了项目的配置,如下示例为配置mybatis-plus和数据源。



    业务日志记录
            日志记录采用aop(LogAop类)方式对所有包含@BussinessLog注解的方法进行aop切入,会记录下当前用户执行了哪些操作(即@BussinessLog value属性的内容),如果涉及到数据修改,会取当前http请求的所有requestParameters与LogObjectHolder类中缓存的Object对象的所有字段作比较(所以在编辑之前的获取详情接口中需要缓存被修改对象之前的字段信息),日志内容会异步存入数据库中(通过ScheduledThreadPoolExecutor类)。

    独创mybatis数据范围拦截器,实现对数据权限的过滤
            数据范围控制是指,对拥有相同角色的用户,根据部门的不同进行相应的数据筛选,如果部门不相同,那么有可能展示出的具体数据是不一致的.所以说Guns对数据范围控制是以部门id为单位来标识的,如何增加数据范围拦截呢?只需在相关的mapper接口的参数中增加一个DataScope对象即可,DataScope中有两个字段,scopeName用来标识sql语句中部门id的字段名称,

    swagger api管理使用说明
    swagger会管理所有包含@ApiOperation注解的控制器方法,同时,可利用@ApiImplicitParams注解标记接口中的参数,具体用法请参考CodeController类中的用法。

    @ApiOperation("生成代码")

    @ApiImplicitParams({        

    @ApiImplicitParam(name = "moduleName", value = "模块名称", required = true, dataType = "String"),        

    @ApiImplicitParam(name = "bizChName", value = "业务名称", required = true, dataType = "String"),        

    @ApiImplicitParam(name = "bizEnName", value = "业务英文名称", required = true, dataType = "String"),         

    @ApiImplicitParam(name = "path", value = "项目生成类路径", required = true, dataType = "String") })

    @RequestMapping(value = "/generate", method = RequestMethod.POST)

    总结
           对一个简单小项目来说,以上功能足够了。演示地址

    http://49.233.19.69:8088/cake/ 。用户名:admin,密码:111111。大家可以进行演示。但不要删数据。大家可以关注微信公众号“java领域帝国”进行技术讨论。 作者:java领域帝国 https://www.bilibili.com/read/cv12720274 出处:bilibili

    您需要登录后才可以回帖 登录 | 立即注册 QQ登录

    本版积分规则