46动态代理、AOP和Spring

什么是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

练习

Spring+AOP+Redis+MySQL练习

「资料来源:饥人谷」

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注