Spring面试题(五)

  1. 说说什么是Spring AOP?
    答: AOP即面向切面编程,是对OOP(面向对象)的一种补充。通过AOP的思想,把无关业务逻辑的功能抽离出来,实现业务代码和业务外代码的解耦,功能的复用和代码的轻量无污染,OOP的基本单元是类,而AOP的基本单元是切面。

  2. 什么是切面(Aspect)?
    答:运用了AOP思想,把什么功能抽离出来,这个功能就是切面,比如日志功能,事务管理都是切面。如果用代码来简洁表述的话,那么用@Aspect来注解的类就是切面。

  3. 什么是连接点(Joinpoint)?
    答:一个类或一段程序代码拥有一些具有边界性质的地方,比如方法执行的前后等,这些特定的地方就被称为连接点,可以把连接点理解成业务代码和切面交流的一个入口,在Spring AOP中,一般把方法的执行点当作是连接点。

  4. 什么是切点(Pointcut)?
    答:连接点是一个大的范围,它规定了哪些地方可以被用来做切入,可以说连接点就是个概念,而Spring AOP通过切点来筛选出真正要使用的连接点。可以粗略的解释一下,就像不是所有的方法都要加日志一样,连接点就是所有的方法的执行点,而切点则是增删改这些真正要加日志的方法,所以一个切点可以匹配多个连接点。

  5. 什么是通知(Advice)?
    答:通知就是定义了在切点对应的连接点上,什么时候做什么事。

  6. 说说通知(Advice)的类型?
    答:
    前置通知(Before):这个类型的通知使用@Before注解标记,它们会在Joinpoint方法之前执行。
    后置通知(After):这个类型的通知使用@After注解标记,它们会在Joinpoint方法之后执行,无论方法是正常退出还是异常退出都会执行,类似finally。
    返回通知(After-returning):这个类型的通知使用@AfterReturning注解标记,它们会在Joinpoint方法正常执行之后再执行。
    异常通知(After-throwing):这个类型的通知使用@AfterThrowing注解标记,它们会在Joinpoint方法抛出了异常退出了再执行。
    环绕通知(Around):这个类型的通知使用@Around注解标记,环绕通知可以看作是包含前置通知和后置通知的一个通知。

  7. 什么是目标对象(Target)?
    答:通知逻辑的织入目标类。

  8. 什么是织入(Weaving)?
    答:织入就是将通知添加到目标类具体连接点上的过程。

  9. 说说AOP有哪些实现方式?
    答: 静态代理,在编译阶段就生成AOP代理类,分为编译时编织和类加载时编织。还有一种是动态代理,在运行阶段生成AOP动态代理类,有JDK动态代理和CGLIB两种方式。

  10. Spring AOP和AspectJ AOP有什么区别?
    答:Spring AOP基于动态代理方式实现,AspectJ基于静态代理方式实现。

发布了289 篇原创文章 · 获赞 302 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_38106322/article/details/104717665
今日推荐