栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring框架学习——AOP

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring框架学习——AOP

一、什么是AOP?

        AOP(Aspect-Oriented Programming), 即 面向切面编程, 它与 OOP( Object-Oriented Programming,面向对象编程) 相辅相成, 提供了与 OOP 不同的抽象软件结构的视角.
        在 OOP 中, 我们以类(class)作为我们的基本单元, 而 AOP 中的基本单元是 Aspect(切面)

二、AOP的几种实现方式

实现 AOP 的技术,主要分为两大类:
静态代理 - 指使用 AOP 框架提供的命令进行编译,从而在编译阶段就可生成 AOP 代理类,因此也称为编译时增强:

  • 编译时编织(特殊编译器实现)
  • 类加载时编织(特殊的类加载器实现)。

动态代理 - 在运行时在内存中“临时”生成 AOP 动态代理类,因此也被称为运行时增强。

  • JDK 动态代理:通过反射来接收被代理的类,并且要求被代理的类必须实现一个接口 。JDK

动态代理的核心是 InvocationHandler 接口和 Proxy 类 。

  • CGLIB 动态代理: 如果目标类没有实现接口,那么 Spring AOP 会选择使用 CGLIB 来动态

代理目标类 。 CGLIB ( Code Generation Library ),是一个代码生成的类库,可以在运行
时动态的生成某个类的子类,注意, CGLIB 是通过继承的方式做的动态代理,因此如果某个
类被标记为 final ,那么它是无法使用 CGLIB 做动态代理的。

三、Spring AOP and AspectJ AOP 的区别

        Spring AOP 基于动态代理方式实现;AspectJ 基于静态代理方式实现。
        Spring AOP 仅支持方法级别的 PointCut;提供了完全的 AOP 支持,它还支持属性级别的 PointCut。

四、AOP的应用场景

场景一: 记录日志

场景二: 监控方法运行时间 (监控性能)

场景三: 权限控制

场景四: 缓存优化 (第一次调用查询数据库,将查询结果放入内存对象, 第二次调用, 直接从内存对象返回,不需要查询数据库 )

场景五: 事务管理 (调用方法前开启事务, 调用方法后提交关闭事务 )

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/349029.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号