1、连接点(Joinpoint):就是方法
    2、切入点(Pointcut):就是挖掉共性功能的方法
    3、通知(Advice): 就是共性功能,最终以一个方法的形式呈现
    4、切面(Aspect):就是共性功能与挖的位置的对应关系
    5、目标对象(Target):就是挖掉功能的方法对应的类产生的对象,这种对象是无法直接完成最终工作的
    6、织入(Weaving):就是将挖掉的功能回填的动态过程
    7、代理(Proxy):目标对象无法直接完成工作,需要对其进行功能回填,通过创建原始对象的代理对象实现
    8、引入/引介(Introduction):就是对原始对象无中生有的添加变量或成员方法

    AOP开发过程:

    • 开发阶段(开发者完成)
      • 正常的制作程序
      • 将非共性功能开发到对应的目标对象类中,并制作成切入点方法
      • 将共性功能独立开发出来,制作成通知
      • 在配置文件中,声明切入点
      • 在配置文件中,声明切入点与通知间的关系(含通知类型),即切面
    • 运行阶段(AOP完成)
      • spring容器加载配置文件,监控所有配置的切入点方法的执行
      • 当监控到切入点方法被运行,使用代理机制,动态创建目标对象的代理对象,根据通知类别,在代理对象的对应位置将通知对应的功能织入,完成完整的代码逻辑并运行

    步骤:

    1. 1、制作通知类,在类中定义一个方法用于完成共性功能
    2. public class AOPAdvice {
    3. public void function() {
    4. System.out.println("共性功能");
    5. }
    6. }
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xmlns:context="http://www.springframework.org/schema/context"
    5. 3、开启aop命名空间
    6. xmlns:aop="http://www.springframework.org/schema/aop"
    7. xsi:schemaLocation="http://www.springframework.org/schema/beans
    8. https://www.springframework.org/schema/beans/spring-beans.xsd
    9. http://www.springframework.org/schema/context
    10. https://www.springframework.org/schema/context/spring-context.xsd
    11. http://www.springframework.org/schema/aop
    12. https://www.springframework.org/schema/aop/spring-aop.xsd">
    13. <bean id="userService" class="com.example.service.Impl.UserServiceImpl" />
    14. 2、配置共性功能为bean,将他交给spring控制
    15. <bean id="myAdvice" class="com.example.aop.AOPAdvice" />
    16. 4、配置Aop
    17. <aop:config>
    18. 配置切入点(自己写的方法) id=名称
    19. <aop:pointcut id="pt" expression="execution(* *..*(..))"/>
    20. 配置切面(切入点与通知的关系)(共性方法)
    21. <aop:aspect ref="myAdvice">
    22. 配置具体的切入点对应通知中哪个操作方法
    23. <aop:before method="function" pointcut-ref="pt"/>
    24. </aop:aspect>
    25. </aop:config>
    26. </beans>