Spring-AOP 代理,增强
目标类 + 额外功能 = 代理类
比如:日志处理/事务处理/异常处理/性能分析…Redis 非关系型数据
1.通过spring AOP的代理功能,给代码增加额外的通用功能
2.业务逻辑就专心的处理实际需求,通用的增强功能独立出来
3.代理的专业术语
额外功能叫 增强.
将增强 加入到 切入点,叫编织
AOP是面向切面编程的一种实现
Spring AOP 知识点思维导图
什么是AOP?
AOP(Aspect-oriented Programming) , 名字与OOP(Object-oriented programming) 仅差一个字母, 其实它是对OOP编程的一种补充. AOP翻译过来叫面向切面编程, 核心就是这个切面. 切面表示从业务逻辑中分离出来的横切逻辑, 比如性能监控, 日志记录, 权限控制等, 这些功能都可以从核心业务逻辑代码中抽离出来. 也就是说, 通过AOP可以解决代码耦合问题, 让职责更加单一.
我们来通过代码来理解下概念, 这里有一个转账业务:
public interface IAccountService {
//主业务逻辑: 转账
void transfer();
}
public class AccountServiceImpl implements IAccountService {
@Override
public void transfer() {
System.out.println("调用dao层,完成转账主业务.");
}
}
现在有一个需求是, 在转账之前需要验证用户身份, 一般情况下我们直接就去修改源代码了:
public class AccountServiceImpl implements IAccountService {
@Override
public void transfer() {
System.out.println("对转账人身份进行验证.");
System.out.println("调用dao层,完成转账主业务.");
}
1
2