美文网首页
2019-01-07

2019-01-07

作者: 一锁荡离魂 | 来源:发表于2019-01-07 22:34 被阅读0次

    title: Spring aop理解帮助文档

    程序员小白一只,现在还在学习中,关于AOP的一些东西有自己的理解,暂时记录一下=0=

    ### 1.AOP面向切面编程的术语解释

    AOP实际上也就是Spring框架为我们实现了动态代理;在不更改源代码的情况下对方法进行增强;所以也就分成了被增强类与增强类两个类,我们可以把这两个抽象的概念想象成两条单链的DNA,来具体化,方便理解;

    * 以下是针对术语的解释;

    Joinpoint:(连接点)被代理的对象所有的方法都是连接点,

    (假如,我们把两个对象想象成两条单链DNA,被增强类上的所有方法(被配对的单链DNA上面的所有连接口就是连接点))

    Pointcut:(切入点)被代理对象所有被增强的方法就是切入点

    (假如,我们把两个对象想象成两条单链DNA,两个DNA配对的过程中,完成配对的连接点就是切入点)

    Advice:(通知/增强)就是增强的方法(假如,我们把两个对象想象成两条单链DNA,把方法想象成DNA上的节点,那么去增强其他单链DNA的单链DNA上的节点就是增强)

    Target:目标对象,(假如,我们把两个想象成两条单链DNA,被配对的那个单链DNA就是目标对象)

    Weaving:(织入)把增强应用到目标对象的过程;(假如,我们把两个想象成两条单链DNA,两个DNA配对的过程就是织入)

    Proxy:代理对象,一个对象被代理成功之后返回的对象(假如,我们把两个想象成两条单链DNA,配对成功之后的双链DNA就是Proxy)

    Aspect:就是切入点和通知的结合面(假如,我们把两个想象成两条单链DNA,两个DNA配对完成之后的DNA链中间的面,就是切面)

    * 针对配置文件中配置aop的理解

    1.把通知bean也交给spring来管理(生成一条用于增强的DNA链)

    2.aop:config便是开始配置aop的配置(开始配对)

    3.aop:aspect 表明配置切面(生成切面)

    id:给切面提供一个唯一的标识(表示切面的编号)

    ref:指定通知类bean的id(增强的DNA链的编号)

    order:连接的执行顺序;默认值是Interage的最大值,一般不指定

    4.在.aop:aspect的标签内部使用对应标签来配置通知的类型

    我们现在让通知类在被增强的方法前执行,所以是前置通知

    aop:before表示的是配置前置通知(旋转增强的DNA链的增强方法,配置执行顺序)

    method属性 就是制定通知类中哪个方法是前置通知(指定用增强DNA中哪个方法(节点)去增强)

    pointcut属性:用于指定切入点表达式,该表带是的含义就是指的是对被代理层的哪些方法增强(指定去增强目标DNA链的哪个方法(节点))

    切入点表达式的写法:

    关键字:execution(表达式)

    * 表达式的写法:

    表达式:

    访问修饰符 返回值 包名.包名....类名.方法名(参数列表)

                    访问修饰符可以省略

                        void com.itheima.service.impl.AccountServiceImpl.saveAccount()

                    返回值可以使用通配符,表示任意返回值

                        * com.itheima.service.impl.AccountServiceImpl.saveAccount()

                    包名可以使用通配符,表示任意包。但是有几级包,就需要写几个*.

                        * *.*.*.*.AccountServiceImpl.saveAccount())

                    包名可以使用..表示当前包及其子包

                        * *..AccountServiceImpl.saveAccount()

                    类名和方法名都可以使用*来实现通配

                        * *..*.*()

                    参数列表:

                        可以直接写数据类型:

                            基本类型直接写名称          int

                            引用类型写包名.类名的方式  java.lang.String

                        可以使用通配符表示任意类型,但是必须有参数

                        可以使用..表示有无参数均可,有参数可以是任意类型

                    全通配写法:

                        * *..*.*(..)

                    实际开发中切入点表达式的通常写法:

                        切到业务层实现类下的所有方法

                            *** com.itheima.service.impl.*.*(..)**

    相关文章

      网友评论

          本文标题:2019-01-07

          本文链接:https://www.haomeiwen.com/subject/wgnurqtx.html