Spring框架-学习笔记3

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

11、AOP简介

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

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

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

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

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

Spring框架-学习笔记3_第1张图片

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

12~13、使用 Spring AOP api

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

Spring框架-学习笔记3_第2张图片

  接下来要将日志功能切入到UserServiceImpl的 add()update()等方法中。
Spring框架-学习笔记3_第3张图片

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

Spring框架-学习笔记3_第4张图片

  
    
    
 

在Test类中编写如下内容:

Spring框架-学习笔记3_第5张图片

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

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

14、自定义类实现AOP

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

Spring框架-学习笔记3_第6张图片


    
        
        
                    
    
 

15、使用注解实现AOP

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

Spring框架-学习笔记3_第7张图片

你可能感兴趣的:(Spring框架-学习笔记3)