Skip to content

dcbupt/keep-account

Repository files navigation

数据初始化

  • DataInit

      spring实例化bean时,执行init方法,初始化用于权限管理的数据
          从application.properties读取角色,初始化角色表
          从application.properties读取ADMIN用户数据,初始化用户表
    

日志重定向到mongodb

  • MongoAppender

  • WebLogAspect

      自定义logback的appender,将日志输出流导入mongodb
      mongo数据库连接参数定义在logback-spring.xml
      mongoAppender实现具体的日志输出格式和内容
      WebLogAspect负责对Controller层的方法做切面,将请求参数、返回结果和执行时间输出到mongodb
    

多数据源

  • DataSourceConfig

      从application.properties读取多个数据库连接参数,初始化DataSource
      @Primary指定主数据源
    
  • MultipleMongoConfig

      MongoDB多数据源配置
      从application.properties读取数据库连接参数,初始化Template
      为特定package下的Repository指定使用的MongoTemplate
    

Redis

  • RedisConfig

      application.properties定义Redis服务器连接参数
      初始化两个RedisTemplate
      
      redis在mac的客户端:redis desktop manager
    

RestApiDoc

  • Swagger2Config

      访问http://localhost:${port}/swagger-ui.html查看swagger2生成的apiDoc
      如果无法访问,修改依赖swagger2的版本,一般是版本过高导致的
      如果页面无法展示apiDoc,一种情况是增强ResponseBody导致的,把相关切面类注了可以暂时解决问题
    

请求拦截器

  • LogInterceptor

      通过实现HandlerInterceptor的方式,自定义一个请求拦截器,打印请求路径
    

WebSecurity

  • WebSecurityConfig

      通过扩展UsernamePasswordAuthenticationFilter的方式,自定义一个过滤器
          『
              如果为登录请求(请求路径匹配WebSecurityConfig配置的登录页login路径且为POST请求),验证并生成token返回给客户端
              如果非登录请求且cookie里携带token,根据token获取userName,查询用户权限更新到SecurityContext
                                                                                                      』
      对特定路径的请求,需要验证用户登录信息,未登录会跳转配置的登录页,登录成功跳转相应的配置页,登录失败跳转页todo
      用户登录后,用户权限会保存到SecurityContext
      对指定路径的请求,通过前置权限校验的方式增加用户权限控制
    

ResponseBody序列化

  • ResponseToJackson

  • ResponseBodyAspect

      对Controller层ResponseBody注解修饰的方法,SPRING提供了可扩展的切面,可以自定义返回结果
      实现ResponseBodyAdvice,返回结果使用Jackson序列化,解决序列化时双向依赖无限递归的问题
      support方法定义切面对哪些ResponseBody修饰的方法生效,基于此可以做定制化处理,比如只针对加了某个注解的方法生效
    

ORM

  • User Role AccountRecord

      ORM框架使用JPA,JPA提供基础API用于CRUD和简单的条件查询操作,同时维护对象间的关联关系,简化查询
      用户表和角色表是多对多关系,用户表和账单流水表是一对多关系
      一对多关系,通过外键维护。多对多关系,通过中间表维护。
      JsonIgnoreProperties注解+jackson序列化,解决双向引用造成序列化无限递归
    

异常拦截

  • MyExceptionHandler

      对Controller层的方法里抛出的特定类型异常,自定义处理逻辑,本质还是基于切面处理
    

测试框架

  • JMockit + JUnit

      测试SpringBootTest环境的测试类时,干掉maven-surefire-plugin(JMockIt提供的测试覆盖率统计插件)
    

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published