SpringMVC+Nutz框架介绍

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SpringMVC+Nutz自主框架介绍

一、框架概况

基于经典技术组合(Spring MVC、Apache Shiro、Bootstrap UI)开发的企业级分布式基础开发平台,实现企业开发常用功能:组织机构、角色用户、权限授权、数据权限、内容管理、微信管理等。

使用的后台技术包括Spring、Spring MVC、Spring Cache、Nutz、Shiro、Jedis、Dubbo、RabbitMQ、Quartz、Elasticsearch、FastDFS、Ehcache、Beetl、Log4j等,前端技术包括Jquery、Bootstrap、Pjax等。

•模块化可自由拆分(分布式可选择Dubbo/RSF实现)

•集成Shiro权限框架(支持二级缓存,通过Redis实现支持session同步)

•集成Ehcache缓存(Shiro一级缓存)

•集成Jedis(redis的java实现,支持Redis集群模式和单机模式切换)

•集成Email服务(可选择启用)

•集成Quartz定时任务(支持集群部署)

•集成Beetl模板引擎(功能强大便捷)

•支持语言国际化(直接写汉字不需要Unicode转换,一种语言一个文件夹)•支持方法日志记录(@SLog注解自动记录日志)

•支持文件输出(@SFile注解自动输出文件,比如输出PDF格式)

•支持json输出(@SJson注解自动输出json字符串)

•支持自定义路由(显性转发或隐性转发)

•支持API Token及应用管理(Jwt实现token机制)

•后台管理界面采用Pjax+Bootstrap

•系统模块(单位、角色、用户、菜单等完整的权限体系)

•CMS模块(简易的内容管理功能)

•微信模块(支持多公众号、微信支付等功能)

二、与xx框架对比分析

1、Dao

1)使用NutDao,简化数据库增删改查操作,天然的过滤非法字符,防止sql注入;

2)兼容各类型数据库,只需对自定义SQL部分进行兼容性改造即可快速部署在MySQL、Oracle/达梦、MSSQL等各类数据库上;3)可通过实体类生成各类数据库的表结构、索引、序列或触发器等,支持动态分表,建立空白数据库启动项目时自动初始化表结构

和数据;

4)支持多数据源,并兼容hibernate、mybatis等其他第三方ORM框架;

2、Service

1)S pring Cache方法缓存,对方法执行结果进行缓存,而非每条表数据,因为大部分业务是不需要用缓存的,比如后台的增删改查

管理;以前项目中经常出现因为缓存嵌套的问题加上缓存更新

不了造成的数据不一致问题;使用redis实现,支持自定义cache key、cache name、可通过通配符清空部分缓存、可设置缓存失

效时间等,并支持redis缓存的集群部署模式;

2)增删改方法中手动添加事务注解,而非全局事务,在某些查询数据环节减少没必要事务操作,之前项目中出现因为事务回写,造成前台异常数据入库的情况;

3、Controller

1)@SJson注解,统一将执行结果转换为json字符串输出,统一的Result类,支持Vue等MVVM框架及前后端分离开发模式;此注解支持Jsonp格式输出;

2)@SFile注解,方便的输出图片、文件、字节流等文件类型,通过@SFile(“pdf”)直接输出PDF文件;

3)@Slog注解,统一且可扩展的日志体系,可根据需要记录时间、操作人、请求路径、输入参数、输出结果等,可将结果记录在数据库、mongodb或文件中;

4)封装datatables js组件,后台分页查询使用起来非常简便,之前项目后台用到的分页组件及代码封装都做的非常固化且容错率

低,做个高级查询开发一不小心就出错;

4、权限体系

1)基于shiro权限框架的深度改造,一级缓存使用ehcache实现性能更优,二级缓存使用redis实现持久化、session同步等功能;

2)将菜单和数据权限有机的组合到一起,使权限分配操作更方便、开发更简便,通过shiro权限判断注解可实现按钮级、方法级权限控制;

3)平台、商家、会员,三套独立的shiro验证体系,使平台权限可对管理员等后台人员进行无限级权限下放和管理,使商家可对店铺子帐号进行菜单和权限的无限级下放和管理,使会员中心也

可做到按钮级权限控制;

5、国际化语言

1)深度改造Spring MVC国际化语言实现方式,实现一种语言一个文件夹,方便扩展更多语言;

2)语言配置文件支持直接写汉字,不需要再做转换,开发便捷;

6、配置文件

1)P ropertiesProxy类,可通过key获取任意一个properties配置文件的value,可通过其封装方法直接得到int、string等类型数据并

支持默认值设置;

2)同时系统后台提供“系统参数”管理,这些配置数据存储在数据库中,在项目启动时会加载的全局变量里(支持集群部署);

7、文件池

1)在一些业务场景中(如奇瑞人脸识别),需要下载图片存放到本地,这些文件不需要永久存储,处理过后需要删除,这个时候就是文件池的用武之地了,框架集成文件池功能,并可配置文件池的大小;

8、FastDFS的集成

1)F astDFS不需要单独安装个mysql,且性能优异;

2)框架支持普通文件上传文件方式和FastDFS文件服务器上传方式的自由切换,看项目实际需要;

9、Redis的集成

1)R edisService一个封装好的服务类可调用redis所有功能;

2)S pring Cache、Shiro二级缓存、RedisService使用同一个JedisAgent 来实现,当然也就都支持redis的单机模式或集群模式了;3)通过Redis的发布/订阅,框架集成实现了Websocket功能(虽然目前还没有项目用到);

10、RabbitMq的集成

1)系统参数、自定义路由、微信token,这些需要在Tomcat集群部署环境下保持一致的数据,是通过rabbitmq的FanoutExchange 实现的;

2)商品下订单、商品数据同步ES,这些功能是通过rabbitmq的TopicExchange实现的;

11、Beetl的集成

1)B eetl的语法简单、容易上手、功能强大,简化了html开发的复杂度和时间,解放了生产力;

2)在网站群项目中,Beetl自定义标签功能,可以用于编辑前台模板文件,来实现全静态页面的生成功能;

12、开发效率提升

1)代码生成器

相关文档
最新文档