Skip to content

项目技术文档说明

hongjiatao edited this page Jul 29, 2022 · 2 revisions

项目技术文档说明

1.sawgger开启关闭文档

以hjt-platform-auth配置文件为例

image

knife4j:

enable: true

开启生产环境屏蔽 true 关闭swagger false 开启swagger

production: false

关闭 只需要改为true即可

2.关于AOP切面,利用自定义@Log注解操作接口日志记录

(1)AOP,面向切面编程,即Aspect Oriented Programming。

摘要:@Component,@Aspect,以供Spring IoC容器进行管理。Spring的IoC容器读取到Aspect注解时,会自动查找带有@Aspect的Bean,然后根据@AfterReturning、@AfterThrowing等拦截器注解把AOP注入到特定的Bean中

本项目中AOP用到的注解:

  • Aspect:切面,类似于Java中的类声明,是对系统中横跨多个类的关注点进行模块化封装
  • Joinpoint:连接点,程序执行过程中的一个“点”,例如:方法的执行或异常的处理。在Spring AOP中,一个连接点总是代表一个方法的执行。
  • Pointcut:切入点,即一组连接点的集合;
  • @AfterReturning: 当方法正常返回时会被此拦截器拦截。(参数说明 jsonResoult必须和形参的参数名字一样)
  • @AfterThrowing: 当方法运行过程中有异常抛出时,会被此拦截器拦截。

额外补充注解:

  • Advice:通知,定义了将会织入到 Joinpoint 的具体逻辑,通过@Before、@After、@Around等注解来区别在JointPoint之前、之后等位置执行代码
  • Weaving:织入,织入指的是将Advice连接到Pointcut指定的Joinpoint处的过程
  • Interceptor:拦截器,是一种实现Advice(通知)的方式;
  • Target:目标对象,即符合切入点所指定的条件被织入Advice的对象。

(2)AOP流程记录顺序

image

1.先定义切面Aspect---->2.定义切点Pointcut(配的是Log注解的路径)---->3 AfterReturning(配切点的值 logPointCut和jsonResult(返回值))----->4.handleLog()执行具体的业务逻辑记录(ip,操作人,方法名称等等)

如果是接口报异常 4那里。

(3)@Around注解说明

image

3.依赖项目中的说明

image

的分类 1.compile:默认值 他表示被依赖项目需要参与当前项目的编译,还有后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去

2.test:依赖项目仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包,例如:junit

3.runtime:表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过了编译而已。例如JDBC驱动,适用运行和测试阶段

4.provided:打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是打包阶段做了exclude操作

5.system:从参与度来说,和provided相同,不过被依赖项不会从maven仓库下载,而是从本地文件系统拿。需要添加systemPath的属性来定义路径

4.Druid技术说明

官方项目地址:https://github.com/alibaba/druid

引进官网的代码,并加入到公共模块

image

注意:配置路径记得改为你项目的路径地址

image

系统模块引入druid模块

image

访问地址:假设系统模块端口是 4403

Druid访问地址:http://localhost:4403/druid/api.html

5.Druid配置

WebStatFilter 具体配置可以参考官网

spring
  datasource:
    druid:
      web-stat-filter:
        enabled: true  ##默认是关闭的 

配置完出现画面 image

StatViewServlet配置

spring
  datasource:
    druid:
      stat-view-servlet:
        enabled: true  ##默认是关闭的 

6.解决如何改spring-boot-dependencies中的某个版本问题

例如 我spring-boot-dependencies有个 <log4j2.version>2.13.3</log4j2.version> 我想改为<log4j2.version>2.15.0</log4j2.version>版本

image

则只需要只控制版本中的bom文件添加<log4j2.version>2.15.0</log4j2.version>即可。

image 添加完打包部署依赖

image

这时候刷新依赖就变为2.15.0版本

image

7.如何使用自动生成的代码

image

把类CodeGenerator复制到你任意一个项目里面

然后填写

image

并且把tempates中的数据复制到对应得resource

image

并且pom导入依赖

<!-- https://mvnrepository.com/artifact/org.freemarker/freemarker -->
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.28</version>
</dependency>
    
    
     <dependency>
            <groupId>com.hjt</groupId>
            <artifactId>demo-spring-boot-mybatis-plus</artifactId>
        </dependency>

输出:

image

8.注解@InnerAuth说明

控制层加这个注解

image 请求头加对应得参数即可访问

image

image

备注:其实上面代码是有点搞笑的,三个||(或),你inner只要下来了,跟userid和username又有什么关系呢?后期再优化

9.注解PreAuthorize说明

image

hasPermi的值获取的是sys_menu中perms的值,看是否有包含 image

打个断点你就知道怎么肥实了 image

10.关于aop操作日志怎么记录自定义异常

1.用BaseException去接受Exception异常,然后把对于的返回记录存到日志表中去

image

image

image