AOP

Spring的灵魂是什么?AOP和IOC!

AOP全称(Aspect-Oriented Programming),面向切面编程,是一种新的方法论, 是对传统OOP(Object-Oriented Programming, 面向对象编程) 的补充。

面向对象通俗来说就是面对类吧,那么为什么AOP面向的是什么?什么是切面?

如上图所示,以整个核心业务逻辑的地方横切过去一分为二

这样一来我们就可以把验证和日志封装到一起,只关注于最核心的加减乘除的业务逻辑。

是不是很抽象?上例子

简单示例

接口Operation

//纳入IOC容器管理
@Component
public interface Operation {public double oper(double num1,double num2);
}

加法实现类

//纳入IOC容器管理
@Component
public class Add implements Operation{public double oper(double num1, double num2) {double res = num1+num2;System.out.println("正在计算...");return res;}
}

切面类

@Component
//表示这个一个切面类
@Aspect
public class OperationAspect {//@Befor表示在执行核心逻辑之前的方法,记得切入点表达式@Before("execution(* Add.oper(..))")public void before(){System.out.println("记得检查是否是数字哦");}//@AfterReturning表示在返回结果后执行的方法@AfterReturning("execution(* Add.oper(..))")public void after(){System.out.println("计算结束");}}

这个切面类就可以理解成将刚刚的验证参数、前置日志、后置日志封装在一起,提高了代码的复用性,不用每次执行加减时都需要验证或者日志。

测试:

public class TestAdd {public static void main(String[] args) {ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");Operation add = (Operation) ctx.getBean("add");System.out.println(add.oper(2,5));}
}

为什么7.0在最后而不是“计算结束”在最后?

因为其实打印7.0这个语句是在所有方法之后了,看之前写在Add实现类中的打印“正在计算中”就知道,“计算结束”这个方法确实是在执行加法并返回结果之后执行了。

如果还是有点懵,建议去看下设计模式中的代理模式

不嫌弃的话可以看看本人的拙作-----羊村往事与代理模式

Spring的双生武魂之AOP相关推荐

  1. Spring双生武魂之IOC

    众所周知,Spring的精髓是什么?没错,就是IOC(DI)和AOP. AOP在之前已有记载,点击传送  Spring双生武魂之AOP 什么是IOC? 小白肯定不知道什么是IOC或者说DI,这里就直接 ...

  2. 震惊!!!年度双生武魂诞生现场----双统安装(centos与windows)

    这里写自定义目录标题 新服务器的入手 开启前的准备 一.windows的安装 二.centos的安装 新服务器的入手 随着我们部门数据量的增多,boss给我们整了个新服务器,到手后让我给调教-咳咳,让 ...

  3. 【Java百炼成神】双生武魂——HashMap、LinkedHashMap、Hashtable

  4. Spring 学习 (三)大话AOP

    一直想着怎么去通俗的讲解AOP,这两篇博客给了我启发 (https://blog.csdn.net/qukaiwei/article/details/50367761),(https://blog.c ...

  5. 阿里飞天大数据飞天AI平台“双生”系统正式发布,9大全新数据产品集中亮相

    作者 | 夕颜 责编 | 唐小引 出品 | AI科技大本营(ID:rgznai100) 如今,大数据和 AI 已经成为两个分不开的词汇,没有大数据,AI 就失去了根基:没有 AI,数据不会呈现爆发式的 ...

  6. Spring从菜鸟到高手(二)AOP的真正实现

    经过了前面一章的学习大家基本理解了SpringAOP的简单工作原理,但是那只是最基本的一些操作,Spring的设计师们知道我们不想在诸如得到一个代理类.需要实现哪些接口 这些琐碎的事情上牵扯过多的经历 ...

  7. JavaEE开发之Spring中的依赖注入与AOP编程

    上篇博客我们系统的聊了<JavaEE开发之基于Eclipse的环境搭建以及Maven Web App的创建>,并在之前的博客中我们聊了依赖注入的相关东西,并且使用Objective-C的R ...

  8. Spring学习8-Spring事务管理(AOP/声明式式事务管理)

    一.基础知识普及 声明式事务的事务属性: 一:传播行为 二:隔离级别 三:只读提示 四:事务超时间隔 五:异常:指定除去RuntimeException其他回滚异常.  传播行为: 所谓事务的传播行为 ...

  9. Spring学习4-面向切面(AOP)之Spring接口方式

    一.初识AOP    关于AOP的学习可以参看帮助文档:spring-3.2.0.M2\docs\reference\html目录下index.html的相关章节       1.AOP:Aspect ...

最新文章

  1. 如何在Linux下写无线网卡的驱动
  2. 大数问题(一个特别大的数需要用数组或字符串来表示)
  3. 源服务器信息,软件源搭建
  4. utf-16 java_Java、Unicode、UTF-8、UTF-16之间的关系
  5. 古巴平台上的通用过滤器–类固醇上的excel过滤器
  6. SQL语句:建表语句、插入语句、查询语句、增加列、删除列、查询语句like、修改语句
  7. ​特征工程系列:特征预处理(上)
  8. mysql 常用配置
  9. SQLServer基本操作
  10. 基于html5的学生管理系统,基于HTML5的学生信息管理系统的设计与实现
  11. tomcat服务器配置优化
  12. 杰奇reader.php源码,最新杰奇CMS Jieqi V2.4 静思文学源码全解密开源版完整源码分享,附带关关采集杰奇V3.5版程序...
  13. DDoS deflate:自动屏蔽DDOS攻击IP
  14. JS - 获取用户当前 ip 地址
  15. Exchangeable Image File (EXIF)图片信息
  16. WHERE语句中BETWEEN与IN的使用教程-MySQL
  17. 品牌纠纷中的盾牌——商标
  18. vue集合离线百度地图
  19. 转载,常用RGB color
  20. Resin 3.0.14 和 IIS6 整合

热门文章

  1. c语言转职,救世之树R和C的意义新手详解 职业和技能的转职
  2. HTML前端开发入门之表单标签/labei标签/datalist标签
  3. 实验05 指针及其在程序设计中的应用(2021级)
  4. 分享免费的主流电商平台商品图片批量下载方法
  5. 曙光服务器S640-G30配置管理口图文教程(完整版)
  6. 通过docker安装zabbix5.0分布式监控系统
  7. Vue.js笔记(一)
  8. 降噪效果好的蓝牙耳机该怎么选?盘点四款高品质降噪蓝牙耳机
  9. 实验四 类和对象;类的继承和派生;多态性; 接口;构造器应用
  10. 知乎视频该如何玩能够赚到一波,5K字揭秘!