Spring AOP工作原理

本文介绍了AOP的概念、用途和运作原理,并通过对比静态代理和动态代理,详细阐述了Spring AOP与AspectJ的差异。重点分析了Spring AOP的实现方式,包括Cglib和JDK动态代理,以及在Spring IoC容器中的应用。
摘要由CSDN通过智能技术生成

1.概述

1.1 谈谈AOP,谈谈代理

在编写正文前,我想聊聊什么是AOP?如果在分析一件事物前,没有明确这件事物的概念,那么讨论无法继续。
对于一件事物,我觉得我应该至少从几个维度去了解它,以AOP为例:

  • AOP是什么?
  • 什么时候或者是什么场景该使用AOP?
  • 为什么要使用AOP?
  • AOP是怎么运作的?

以上的问题应该是递进式的,了解AOP的实现原理应该是比较充分地理解前几个问题,否则所谓的分析实现原理,只不过是纸上谈兵,不值一提。

什么是AOP?

AOP(Aspect Orient Programing),翻译过来,即是面向切面编程,个人的理解,它是一种编码理念,是面向对象编程的另一种补充。

为什么使用AOP?

在整个业务流程线中,大多数编码逻辑都是一种纵向流程,以对象的行为进行交互,推动系统的开展,这种纵向的设计思维,在单一类中进行对象的设计,并不存在共性问题,但是一旦系统复杂程度加大,这时候存在大量的共性,如果依然以纵向的设计思维,那么这时候要去管理这些类的公共行为,则会十分复杂。
另一方面,对于业务开发人员而言,对于部分不属于业务流程的过程逻辑,实际他本身是不关注的,他更希望的是能集中精力到业务逻辑里面去。

上面的描述有些抽象,以下举个例子:
比如我们希望设计一个日志打印模块,以纵向流程的思维,我们将会在下面每个类都加入日志打印的方法。这种实现会有两个不好的地方。第一,业务开发者无法专注于业务,要分心到日志的输出;第二、在系统设计上,这种日志输出的代码将会分散到各处,充满不好的味道。

public class ClassA {
    Logger logger = LogFactory.getLogger(this.getClass());
  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值