什么是AOP
- Aspect-Oriented Programming 面向切面编程
- 相对于OOP(面向对象编程)
- AOP是面向切面编程,关注一个统一的切面
- AOP和Spring是不同的东西
aop适合于哪些场景
- 需要统一处理的场景
- 日志
- 缓存
- 鉴权
- 如果用OOP来做需要怎么办?
- 装饰器模式
装饰器模式
- Decorator pattern
- 动态地为一个对象增加功能,但是不改变其结构
- 本质上是一个“包装”
AOP的实现
- JDK动态代理
- 优点:方便,不需要依赖任何第三方库
- 缺点:功能受限,只适用于接口
AOP的实现
- CGLIB/ByteBuddy 字节码生成
- 优点:强大,不受接口的限制
- 缺点:需要引用额外的第三方类库
- 不能增强final类/final/private方法
AOP与Spring
-
在Spring中使用AOP实现Redis缓存
-
Spring是如何切换JDK动态代理和CGLIB的?
- spring.aop.proxy-target-class=true
-
@Aspect声明切面
-
©Before
-
©After
-
©Around
什么是Redis
- 广泛使用的内存缓存
- 常见的数据结构
- String/List/Set/Hash/ZSet
- Redis为什么这么快
- 完全基于内存
- 优秀的数据结构设计
- 单一线程,避免上下文切换开销
- 事件驱动,非阻塞
docker 添加redis
-
docker pull redis
-
docker run -p 6379:6379 -d redis
练习
「资料来源:饥人谷」