spring AOP中的基础问题

  1. 简述对Spring AOP的理解

    AOP是面向切面编程, 主要的目的是将与业务本身无关,却被业务模块所共同调用的功能代码封装成切面以减少系统的重复代码,降低耦合,提高可扩展性

  2. 代理的三要素

    • target:设定目标对象;
    • proxyInterfaces:设定代理接口
    • interceptorNames:设定拦截器的名字
  3. 什么是动态代理?有哪些动态代理?简述其对应的实现流程

    **动态代理:**当想要给实现了某个接口的类中的方法,加一些额外的处理。比如说加日志,加事务等。可以给这个类创建一个代理,故名思议就是创建一个新的类,这个类不仅包含原来类方法的功能,而且还在原来的基础上添加了额外处理的新类。这个代理类并不是定义好的,是动态生成的。具有解耦意义,灵活,扩展性强。

    **动态代理实现:**首先必须定义一个接口,还要有一个InvocationHandler(将实现接口的类的对象传递给它)处理类。再有一个工具类Proxy(习惯性将其称为代理类,因为调用他的newInstance()可以产生代理对象,其实他只是一个产生代理对象的工具类)。利用到InvocationHandler,拼接代理类源码,将其编译生成代理类的二进制码,利用加载器加载,并将其实例化产生代理对象,最后返回。

    **动态代理的应用:**Spring的AOP,加事务,加权限,加日志。

  4. Spring中有哪些不同的通知类型(advice types)?

    名称 说明
    org.springframework.aop.MethodBeforeAdvice(前置通知) 在调用目标方法之前自动执行的通知称为前置通知,可以应用于权限管理等功能
    org.springframework.aop.AfterReturningAdvice(后置通知) 在调用目标方法之后自动呢执行的通知称为后置通知,可以应用于关闭流,上传文件,删除临时文件等功能
    org.aopalliance.intercept.MethodInterceptor(环绕通知) 在调用目标方法前后自动执行的通知称为环绕通知,可以应用于日志,事务管理等功能
    org.springframework.aop.ThrowsAdvice(异常通知) 在方法抛出异常时自动执行的通知称为异常通知,可以应用于处理异常记录日志等功能.
    正常返回通知[After returning advice] 在连接点正常执行完成后执行,如果连接点抛出异常,则不会执行。
  5. 解释一下Spring AOP里面的几个名词:

    (1)切面(Aspect) : 切入点和通知的结合

    (2)连接点(Join point) : 指那些被拦截到的点.是指应用在执行过程中能够插入切面的一个点

    (3)通知(Advice) : 值拦截到Joinpoint之后要做的事情,即对切入点增强的内容

    **(4)切入点(Pointcut):**指要对那些Joinpoint进行拦截,即拦截的连接点

    (5)引入(Introduction):在不修改原有应⽤程序代码的情况下,在程序运⾏期为类动态添加⽅法或者字段的过程称为引⼊

    **(6)目标对象(Target Object)**指代理的目标对象

    (7)织入(Weaving):指把增强代码应用到目标上,生成代理对象的过程

  6. AOP的应用场景

    其应用主要体现在事务处理,日志管理,权限控制,异常处理等方面

  7. 简述Spring中Bean的生命周期

    在Spring中,Bean的⽣命周期包括Bean的定义、初始化、使⽤和销毁4个阶段

猜你喜欢

转载自blog.csdn.net/weixin_45561352/article/details/108542378