Spring的双生武魂之AOP
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相关推荐
- Spring双生武魂之IOC
众所周知,Spring的精髓是什么?没错,就是IOC(DI)和AOP. AOP在之前已有记载,点击传送 Spring双生武魂之AOP 什么是IOC? 小白肯定不知道什么是IOC或者说DI,这里就直接 ...
- 震惊!!!年度双生武魂诞生现场----双统安装(centos与windows)
这里写自定义目录标题 新服务器的入手 开启前的准备 一.windows的安装 二.centos的安装 新服务器的入手 随着我们部门数据量的增多,boss给我们整了个新服务器,到手后让我给调教-咳咳,让 ...
- 【Java百炼成神】双生武魂——HashMap、LinkedHashMap、Hashtable
- Spring 学习 (三)大话AOP
一直想着怎么去通俗的讲解AOP,这两篇博客给了我启发 (https://blog.csdn.net/qukaiwei/article/details/50367761),(https://blog.c ...
- 阿里飞天大数据飞天AI平台“双生”系统正式发布,9大全新数据产品集中亮相
作者 | 夕颜 责编 | 唐小引 出品 | AI科技大本营(ID:rgznai100) 如今,大数据和 AI 已经成为两个分不开的词汇,没有大数据,AI 就失去了根基:没有 AI,数据不会呈现爆发式的 ...
- Spring从菜鸟到高手(二)AOP的真正实现
经过了前面一章的学习大家基本理解了SpringAOP的简单工作原理,但是那只是最基本的一些操作,Spring的设计师们知道我们不想在诸如得到一个代理类.需要实现哪些接口 这些琐碎的事情上牵扯过多的经历 ...
- JavaEE开发之Spring中的依赖注入与AOP编程
上篇博客我们系统的聊了<JavaEE开发之基于Eclipse的环境搭建以及Maven Web App的创建>,并在之前的博客中我们聊了依赖注入的相关东西,并且使用Objective-C的R ...
- Spring学习8-Spring事务管理(AOP/声明式式事务管理)
一.基础知识普及 声明式事务的事务属性: 一:传播行为 二:隔离级别 三:只读提示 四:事务超时间隔 五:异常:指定除去RuntimeException其他回滚异常. 传播行为: 所谓事务的传播行为 ...
- Spring学习4-面向切面(AOP)之Spring接口方式
一.初识AOP 关于AOP的学习可以参看帮助文档:spring-3.2.0.M2\docs\reference\html目录下index.html的相关章节 1.AOP:Aspect ...
最新文章
- 如何在Linux下写无线网卡的驱动
- 大数问题(一个特别大的数需要用数组或字符串来表示)
- 源服务器信息,软件源搭建
- utf-16 java_Java、Unicode、UTF-8、UTF-16之间的关系
- 古巴平台上的通用过滤器–类固醇上的excel过滤器
- SQL语句:建表语句、插入语句、查询语句、增加列、删除列、查询语句like、修改语句
- ​特征工程系列:特征预处理(上)
- mysql 常用配置
- SQLServer基本操作
- 基于html5的学生管理系统,基于HTML5的学生信息管理系统的设计与实现
- tomcat服务器配置优化
- 杰奇reader.php源码,最新杰奇CMS Jieqi V2.4 静思文学源码全解密开源版完整源码分享,附带关关采集杰奇V3.5版程序...
- DDoS deflate:自动屏蔽DDOS攻击IP
- JS - 获取用户当前 ip 地址
- Exchangeable Image File (EXIF)图片信息
- WHERE语句中BETWEEN与IN的使用教程-MySQL
- 品牌纠纷中的盾牌——商标
- vue集合离线百度地图
- 转载,常用RGB color
- Resin 3.0.14 和 IIS6 整合