美文网首页
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