美文网首页
Spring框架-学习笔记3

Spring框架-学习笔记3

作者: secondtown | 来源:发表于2018-09-28 11:59 被阅读9次

      该学习笔记是《尚学堂spring视频教程》的学习笔记第三部分。

    11、AOP简介

    1、AOP:Aspect-Oriented-Programming
    面向切面编程
    2、AOP在Spring中作用:

    • 提供声明式服务
    • 允许用户实现自定义切面

    传统的编程模式:
    JSP -->Action -->Service --> dao,纵向的编程模式。
    而AOP的编程模式:
      它是一种横向的编程模式。可以理解为在不改变原有代码的情况下增加新的功能。就是通过之前提过的代理的方式去增加功能。

    3、AOP的优点:
      其实就是代理模式的优点,真实角色处理的业务更加纯粹,不用关注公共的业务。公共的业务由代理来完成,实现了业务的分工。公共业务发生改变(拓展)时,变得更加集中和方便。

    4、Spring AOP中的概念
    关注点:增加某个业务:如安全、缓存、异常等。
    切面(Aspect):一个关注点的模块化。
      举个例子,日志一般都会在每个方法中都要添加,可以用一个方法将日志封装成一个类。这也就是模块化的理念。


    像这里封装好的Log就可以称之为切面了。
    通知(advice):在切面的某个特定的连接点上执行的动作
    织入(weaving):把切面连接到其他的应用程序类型或者对象上,并创建一个被通知的对象

    12~13、使用 Spring AOP api

    5、通过Spring的api实现AOP
    一个简单的通知类型是前置通知


      接下来要将日志功能切入到UserServiceImpl的add()update()等方法中。

      而目前两者之间尚没有任何的关系。需要在配置文件中进行实现。其中<aop>部分的内容单独列出:

      <aop:config>
        <aop:pointcut expression="execution(* cn.sxt.service.UserServiceImpl.add)" id="pointcut"/>
        <aop:adviser advice-ref="log"  pointcut-ref="pointcut"/>
     </aop:config>
    

    在Test类中编写如下内容:


    类似的还有后置通知的方法,这里忽略。

    AOP的重要性:使得业务方法变得更加纯粹。Spring的底层还是通过动态代理实现的。但是通过Spring来实现的话还要比动态代理要简单得多。只需要配置一下就可以让方法加到指定的业务方法上去了,并且分的很清楚,例如是前置通知、后置通知。Spring AOP 可以认为是动态代理的框架。
    在不去改变原有代码的基础上改变新的功能
      其本质——将公共的业务(日志、安全等)和领域业务结合。当执行领域业务时就会把公共业务加进来,实现公共业务的重复利用。使得领域业务更加纯粹。
      以支付领域的业务为例:
      接入第三方接口--(安全检测)--->进行身份验证 -->接下来通过资金验证 --> 完成支付。
    这些可以算成是领域业务。
    而公共业务则是指:日志、安全、权限、缓存、事务等等

    14、自定义类实现AOP

      自定义类如下所示:这里的区别在于Log没有实现Spring中的MethodBeforeAdvice等接口。所以在配置文件中需要使用<aop:aspect ref="log">来进行关联。

    <aop:config>
        <aop:aspect ref="log">
            <aop:pointcut expression="execution(* cn.sxt.service.impl.*.*(..))" id="pointcut"/>
            <aop:before method="before" pointcut-ref="pointcut"/>
            <aop:before method="after" pointcut-ref="pointcut"/>            
        </aop:aspect>
     </aop:config>
    

    15、使用注解实现AOP

      这是接着上面的通过Spring api、自定义类之外的实现AOP的第三种实现AOP的方法。
      可以理解为将配置文件中的部分内容放在类中。这里对Log类进行一些修改,主要是在类的前面添加了@Aspect注解,而在方法中添加了@Before@After注解。

    相关文章

      网友评论

          本文标题:Spring框架-学习笔记3

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