AOP概念
说明
- AOP(Aspect Oriented Programming)即面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性和开发效率。
AOP中的相关概念
- @Aspect+@Component:进行切面类的声明
- @Aspect+@Component+@Order(1):进行切面类的声明,并设置注解执行的顺序
- @Pointcut: 定义切入点,可通过@annotation方法指定切点,用来监听
- @Before/@After/@AfterRunning/@AfterThrowing/@Around:五大通知
Advice
注解。定义切入时机
和增强处理逻辑
,即程序要在某种情况下具体要做的操作。
数据权限作用与操作
作用
- 不同用户所查看的
用户数据
有差异
操作
- 修改用户admin的角色为
超级管理员
;用户ry的部门为运维部门
,角色为普通角色
- 分配角色普通角色的权限为
本部门数据权限
- 重新登录查看数据
数据权限后端源码分析
- Controller
- Service
@DataScope中,deptAlias和userAlias分别指部门别名和用户别名,需要与sql语句中的部门和用户表的别名对应
- DataScope 注解
- AOP类 DataScopeAspect
@Aspect+@Component:定义AOP类
方法调用
@annotation:进行切点的定义,将带有@DataScope注解的函数作为切点
@Before:在带有@DataScope注解的函数将要执行之前,先执行doBefore的方法进行参数清空防止注入和获取当前用户信息,对于不是超级管理员的用户,则需要进行数据范围过滤。因此不是超级管理员的函数调用流程为:doBefore() -> clearDataScope() -> handleDataScope() -> dataScopeFilter()
dataScopeFilter()方法
获取当前用户的角色,对角色的权限进行判断并进行sql语句的拼接
- Java Mapper
- xml Mapper
- Log日志展示