十年架构师面试经验之谈,如何回答 Spring AOP 和代理

本文是十年架构师的经验分享,详细介绍了Spring AOP及其与代理模式的关系,包括静态代理、JDK动态代理和CGLIB动态代理的工作原理,并探讨了Spring AOP在选择代理技术时的策略。适合准备面试和深化AOP理解的开发者阅读。
摘要由CSDN通过智能技术生成

我们知道,Spring 中 AOP 是一大核心技术,也是面试中经常会被问到的问题,最近我在网上也看到很多面试题,其中和 Spring AOP 相关的就有不少,这篇文章主要来总结下相关的技术点,希望对大家有用。

十年架构师面试经验之谈,如何回答 Spring AOP 和代理
0. 几个常见的问题

针对这一块的东西,一般下面几个问题面试官问的比较多:

  • Spring AOP用的是哪种设计模式?

  • 谈谈你对代理模式的理解?

  • 静态代理和动态代理有什么区别?

  • 如何实现动态代理?

  • Spring AOP中用的是哪种代理技术?

如果这些问题都能回答的很流畅的话,说明对代理这一块的基本知识有一定的了解了。因为我们在实际开发中,写业务代码会更多,所以这一块的东西,大部分人可能知道个一二,但是如果让他们很有条理的表达出来,可能就不那么容易了。

十年架构师面试经验之谈,如何回答 Spring AOP 和代理

  1. 什么是 Spring AOP?

一般面试官问到这个问题,面试者基本上都会回答:AOP 就是面向切面编程。其实这真的是句废话,这么回答真的没有任何意义。

或许你可以给面试官举个例子:歌星都有好多助理,歌星最重要的一件事就是唱歌,其他事他不用关注,比如唱歌前可能需要和其他人谈合作,还要布置场地,唱歌后还要收钱等等,这些统统交给他对应的助理去做。也许哪一天,这个歌星做慈善,免费唱歌了,不收钱了,那么就可以把收钱这个助力给辞退了。这就是 AOP,每个人各司其职,灵活组合,达到一种可配置的、可插拔的程序结构。AOP 的实现原理就是代理模式。

在程序中也是如此,通过代理,可以详细控制访问某个或者某类对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理。

十年架构师面试经验之谈,如何回答 Spring AOP 和代理
2. 什么是代理模式?

代理模式的核心作用就是通过代理,控制对对象的访问。它的设计思路是:定义一个抽象角色,让代理角色和真实角色分别去实现它。

真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。它只关注真正的业务逻辑,比如歌星唱歌。

代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并在前后可以附加自己的操作,比如谈合同,布置场地,收钱等等。

这就是代理模式的设计思路。代理模式分为静态代理和动态代理。静态代理是我们自己创建一个代理类,而动态代理是程序自动帮我们生成一个代理,我们就不用管了。下面我详细介绍一下这两种代理模式。

  1. 静态代理模式

就举明星唱歌这个例子,根据上面提供的设计思路,首先我们需要创建明星这个抽象角色,

/**
* 明星接口类
* @author shengwu ni
* @date 2018-12-07
*/
public interface Star {
 /**
 * 唱歌方法
 */
 void sing();
}

静态代理需要创建

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值