18/8/6~18/8/10实习报告

8/6 星期一

已办事项:

  1. Guns框架中map + wrapper的数据展示方式。
  2. Java中PO、BO、VO、DTO、POJO异同点。
  3. Guns框架中日志系统的了解。
  4. @Bussinesslog注解,自定义注解的学习。
  5. 日志保存变更:业务涉及修改操作时,日志需要进行修改前数据的暂存。
  6. 日志系统原理:AOP,设立切点,在业务完成后进行操作日志的构建和生成。

待办事项:

  1. swagger API表达工具的学习。
  2. Guns集成Shiro权限管理模块。

8/7 星期二

已办事项:

  1. Swagger API 框架学习使用。
  2. Guns整合Shiro权限管理。
  3. 全局异常拦截器配置 @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进行判断

待办事项:

  1. Guns框架中代码生成器的了解。
  2. 数据范围学习。
  3. Guns框架中缓存机制的学习。

8/8 星期三

已办事项:

  1. 代码生成器:
    开发新业务的时候,减少重复代码的编写,构建业务框架模板。
    原理: 模板 + 变量 = 代码
    设计方面:
    config + engine
    config:
        ContextConfig:全局基础配置
        ControllerConfig:Controller模板配置
        ServiceConfig:Service模板配置
        DaoConfig:DAO模板配置
        PageConfig:页面模板配置
    engine:
        AbstractTemplateEngine:抽象模板引擎父类
        GunsTemplateEngine:模板引擎
        SimpleTemplateEngine:模板引擎具体实现类 -- 通用
    模板设计模式:在GunsTemplateEngine中定义逻辑骨架,将实现步骤推迟到子类SimpleTemplateEngine中去完成。 
     

  2. 数据范围控制的使用:
    同一角色用户会受到数据范围的限制,展示内容会有所不同。 例如:同角色用户所属部门不同,该用户所能访问到数据也不同。
    在权限管理基础上添加数据范围控制:Guns中通过用户subject的部门字段进行数据范围控制。
    数据范围控制原理:对原有SQL进行包装筛选
    如何添加数据范围控制?
        1. 定义DataScope
        2. 在需要进行数据范围过滤的查询方法上,在方法参数上,增加DataScope对象。
            DataScope对象中包含两个属性,一个是限制数据范围过滤的字段名,一个是数据范围的具体值。
        3. 配置Mybatis拦截器,对所需执行的SQL语句进行拦截处理。
     

  3. 缓存管理:对经常访问的信息进行存储,方便再次访问。
    Spring缓存:对缓存实现的抽象,利用spring缓存可以方便的用一套代码切换不同的缓存实现。
    常用缓存的配置:EHcache缓存,Redis缓存
    声明缓存:
    @Cacheable -- select
    @CachePut -- insert
    @CacheEvict -- update/delete
    @Caching -- group

待办事项:

  1. 完成缓存管理的验证Demo。
  2. SPEL表达式的了解。
  3. Mybatis-plus中的数据分页。
  4. Transaction事务管理。

8/9 星期四

已办事项:

  1. Spring缓存管理Demo搭建

  2. mybatis-plus分页插件学习。

  3. Transaction事务管理中传播行为的测试Demo。

待办事项:

  1. Transaction事务管理中的传播行为测试代码以及事务特性整理并发布博客。
  2. JWT签名机制的了解学习。
  3. Spring AOP中的动态JDK代理了解。
  4. Mybatis-plus中的BaseMapper的学习。

8/10 星期五

已办事项:

  1. 事务管理Transaction中关于传播行为的测试Demo完成。已发表博客:https://blog.csdn.net/Nerver_77/article/details/81556968
  2. JWT签名认证机制了解学习。

  3. 传统Session认证的局限性。

  4. JWT的构成部分和基于token鉴权认证机制。

  5. Guns框架学习笔记初稿完成。

待办事项:

  1. 关于数据可视化平台的搭建,前期Manager模块的规划及功能实现。
  2. 代码命名规范参考阿里巴巴Java开发手册。
  3. 模块功能细化。

关于Spring AOP中的动态代理和Mybatis-plus框架中BaseMapper的学习会在后期进行总结。

猜你喜欢

转载自blog.csdn.net/Nerver_77/article/details/81623744
今日推荐