8/6 星期一
已办事项:
- Guns框架中map + wrapper的数据展示方式。
- Java中PO、BO、VO、DTO、POJO异同点。
- Guns框架中日志系统的了解。
- @Bussinesslog注解,自定义注解的学习。
- 日志保存变更:业务涉及修改操作时,日志需要进行修改前数据的暂存。
- 日志系统原理:AOP,设立切点,在业务完成后进行操作日志的构建和生成。
待办事项:
- swagger API表达工具的学习。
- Guns集成Shiro权限管理模块。
8/7 星期二
已办事项:
- Swagger API 框架学习使用。
- Guns整合Shiro权限管理。
- 全局异常拦截器配置 @ControllerAdvice。
学习笔记:
1. swagger的学习使用
配置:
依赖导入
注解方式声明
静态资源引入 -- 显示swagger-UI + 静态资源jar包
配置参数:
@Api:用在类上,说明该类的作用。
@ApiOperation:注解来给API增加方法说明。
@ApiImplicitParams : 用在方法上包含一组参数说明。
@ApiImplicitParam:用来注解来给方法入参增加说明。
paramType:参数放在哪个地方
header-->请求参数的获取:@RequestHeader
query-->请求参数的获取:@RequestParam
path(用于restful接口)-->请求参数的获取:@PathVariable
body(@RequestBody)
form(表单提交)
name:参数名
dataType:参数类型
required:参数是否必须传
value:参数的含义
defaultValue:参数的默认值
@ApiResponses:用于表示一组响应。
@ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
code:数字,例如400
message:信息,例如"请求参数没填好"
response:抛出异常的类
@ApiModel:描述一个Model的信息
@ApiModelProperty:描述一个model的属性
测试:自定义请求进行测试
//测试swagger
@RequestMapping(value = "/test/sw/{num}", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "测试Swagger", notes = "测试SwaggerNotes", tags = {""}, response = String.class)
@ApiImplicitParams({
@ApiImplicitParam(value = "测试字符串", name = "str", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(value = "测试数字", name = "num", required = true, dataType = "int", paramType = "path"),
})
public String swaggerTest(@RequestParam String str,@PathVariable Integer num){
return str + num.toString();
}
2. Guns整合shiro
权限管理分三块:用户 -- 角色 -- 资源(权限)
如何使用shiro来管理权限?
依赖导入
shiro配置
自定义@Permission注解
配置AOP -- 权限检查
Shiro标签
添加权限管理步骤:
1. 通过管理系统添加资源权限
2. 为角色进行权限配置
3. 对用户分配到相应角色
4. 在Controller层对需要进行权限控制的方法添加@Permission注解
5. 前端页面如果需要权限控制进行内容展示,需要使用shiro标签中的hasPermission进行判断
待办事项:
- Guns框架中代码生成器的了解。
- 数据范围学习。
- Guns框架中缓存机制的学习。
8/8 星期三
已办事项:
-
代码生成器:
开发新业务的时候,减少重复代码的编写,构建业务框架模板。
原理: 模板 + 变量 = 代码
设计方面:
config + engine
config:
ContextConfig:全局基础配置
ControllerConfig:Controller模板配置
ServiceConfig:Service模板配置
DaoConfig:DAO模板配置
PageConfig:页面模板配置
engine:
AbstractTemplateEngine:抽象模板引擎父类
GunsTemplateEngine:模板引擎
SimpleTemplateEngine:模板引擎具体实现类 -- 通用
模板设计模式:在GunsTemplateEngine中定义逻辑骨架,将实现步骤推迟到子类SimpleTemplateEngine中去完成。
-
数据范围控制的使用:
同一角色用户会受到数据范围的限制,展示内容会有所不同。 例如:同角色用户所属部门不同,该用户所能访问到数据也不同。
在权限管理基础上添加数据范围控制:Guns中通过用户subject的部门字段进行数据范围控制。
数据范围控制原理:对原有SQL进行包装筛选
如何添加数据范围控制?
1. 定义DataScope
2. 在需要进行数据范围过滤的查询方法上,在方法参数上,增加DataScope对象。
DataScope对象中包含两个属性,一个是限制数据范围过滤的字段名,一个是数据范围的具体值。
3. 配置Mybatis拦截器,对所需执行的SQL语句进行拦截处理。
-
缓存管理:对经常访问的信息进行存储,方便再次访问。
Spring缓存:对缓存实现的抽象,利用spring缓存可以方便的用一套代码切换不同的缓存实现。
常用缓存的配置:EHcache缓存,Redis缓存
声明缓存:
@Cacheable -- select
@CachePut -- insert
@CacheEvict -- update/delete
@Caching -- group
待办事项:
- 完成缓存管理的验证Demo。
- SPEL表达式的了解。
- Mybatis-plus中的数据分页。
- Transaction事务管理。
8/9 星期四
已办事项:
-
Spring缓存管理Demo搭建
-
mybatis-plus分页插件学习。
- Transaction事务管理中传播行为的测试Demo。
待办事项:
- Transaction事务管理中的传播行为测试代码以及事务特性整理并发布博客。
- JWT签名机制的了解学习。
- Spring AOP中的动态JDK代理了解。
- Mybatis-plus中的BaseMapper的学习。
8/10 星期五
已办事项:
- 事务管理Transaction中关于传播行为的测试Demo完成。已发表博客:https://blog.csdn.net/Nerver_77/article/details/81556968
-
JWT签名认证机制了解学习。
-
传统Session认证的局限性。
-
JWT的构成部分和基于token鉴权认证机制。
- Guns框架学习笔记初稿完成。
待办事项:
- 关于数据可视化平台的搭建,前期Manager模块的规划及功能实现。
- 代码命名规范参考阿里巴巴Java开发手册。
- 模块功能细化。
关于Spring AOP中的动态代理和Mybatis-plus框架中BaseMapper的学习会在后期进行总结。