美文网首页
Spring aop学习(1)

Spring aop学习(1)

作者: 初夏时的猫 | 来源:发表于2019-03-08 16:59 被阅读0次

    笔者第一次接触框架,之前粗略学了一些struts2和hibernate(学的不好以后还会重新看),一直认为spring是目前最主流的框架,希望通过摘取所有其他大牛的讲解,精通spring。因为是初学,好多不理解的知识不会记载进来,只学目前能学懂的。

    AOP核心概念

    1、横切关注点

    对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点

    2、切面(aspect)

    类是对物体特征的抽象,切面就是对横切关注点的抽象

    3、连接点(joinpoint)

    被拦截到的点,因为Spring只支持方法类型的连接点,所以在Spring中连接点指的就是被拦截到的方法,实际上连接点还可以是字段或者构造器

    4、切入点(pointcut)

    对连接点进行拦截的定义

    5、通知(advice)

    所谓通知指的就是指拦截到连接点之后要执行的代码,通知分为前置、后置、异常、最终、环绕通知五类

    6、目标对象

    代理的目标对象

    7、织入(weave)

    将切面应用到目标对象并导致代理对象创建的过程

    8、引入(introduction)

    在不修改代码的前提下,引入可以在运行期为类动态地添加一些方法或字段

    笔者理解:把想要加强的方法(或异常)拦截,在执行其进行前后要加强的方法。

    下面我们来写一个aop的入门练习!(虽然很简单,但是写出来也很有成就感呢)

    在写之前要了解一些知识:

    1.spring config:

    我们需要加入新的schema文件

    下面这段为spring config文件模板:(文件命名为ex_aop.xml)


    schema

    2.需要导入jar包:

    (1).aopalliance.jar

    (2).aspectjweaver.jar(自定义通知类包)

    jar包


    下面开始写第一个小例子!

    首先定义一个接口HelloWorld

    HelloWorld

    定义两个类实现它

    HW1 HW2


    定义一个aop拦截器:

    拦截器

    编写ex_aop.xml

    ex_aop



    对于刚刚学习spring的小白们(就是我自己,心塞QAQ),还要知道expression的使用:

    例: execution (* com.sample.service..*. *(..))

    整个表达式可以分为五个部分:

    1、execution()::表达式主体。

    2、第一个*号:表示返回类型, *号表示所有的类型。

    3、包名:表示需要拦截的包名,后面的两个句点表示当前包和当前包的所有子包,com.sample.service包、子孙包下所有类的方法。

    4、第二个*号:表示类名,*号表示所有的类。

    5、*(..):最后这个星号表示方法名,*号表示所有的方法,后面括弧里面表示方法的参数,两个句点表示任何参数

    注意:这个地方写错文件不会报错,但运行会报错!

    接下来我们就可以进行测试啦!

    测试类

    相关文章

      网友评论

          本文标题:Spring aop学习(1)

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