1.前言
提到Spring,都知道最基本的控制反转(IOC),依赖注入(DI)以及切面编程(AOP)。技术理论都是需要通过实践去证明和运用的,长时间不接触不运用,就容易淡忘。今日抽空再次温习AOP这个技术点。
AOP切面编程,说简单点在我们所写了很多不相关联的程序中(纵向),横向植入一段编程代码,从而达到我们想要目的。何为横向,可能很多人跟我一样,觉得很抽象,不能理解。其实很多资料上已经有图片做讲解,那我就用一个字来做比喻。例如卅(sa)字,我们所写的众多运行方法或逻辑代码就好比这三个竖,可能他们是毫不相关的,但是他们会需要用到一段共同的代码(比如用户校验),那么这一横(即aop)即可帮我们来完成这一操作。aop不会改变我们的编辑代码,但是却能起到影响程序运行结果的效果,这就是它的魅力所在。
2.代码演示
下面我们就以一个简单的例子来小试牛刀。
首先需要配置xml文件,像我们平时的spring-mvc.xml等,在其中配置上先引入aop所需配置。如图:
然后开始编写Demo代码。先创建一个接口类:
再编写2个接口的实现类
package com.jokerchen.test.AopDemo;
public class PersonA implements DoSomeThing{
private String name = "MuMu";
@Override
public void sayHello() {
// TODO Auto-generated method stub
System.out.println(name + "正在say hello!");
}
@Override
public String doAction() {
// TODO Auto-generated method stub
String string = "然后" + name + "去了网咖!";
return string;
}
}
package com.jokerchen.test.AopDemo;
public class PersonB implements DoSomeThing{
private String name = "Shakula";
@Override
public void sayHello() {
// TODO Auto-generated method stub
System.out.println(name + "正在say hello!");
}
@Override
public String doAction() {
// TODO Auto-generated method stub
String string = "然后" + name + "去到了Coffee Store!";
return string;
}
}
现在我们开始编写我们需要植入的AOP代码,这里我们简单的写一个打印时间的功能测试:
最后来一段测试代码:
到这里,我们代码demo已经编写完成。接下来需要配置aop的切面切点信息。如下:
至此,我们的准备工作都做完了。可以启动测试类TestMethod来看看结果如何:
结果一目了然,我们配置的before和after效果顺利执行。
3.总结
在使用过程中,注意创建接口实现类的对象时,不能用new,必须用spring的容器加载创建,否则不会有效果。还有需要加入aopalliance.jar和aspectjweaver.jar这两个包,否则项目会报错。
最后还是希望有兴趣的朋友能够一起学习,有不足之处尽情提出。