Spring框架之浅析AOP切面编程

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这两个包,否则项目会报错。

最后还是希望有兴趣的朋友能够一起学习,有不足之处尽情提出。

发布了43 篇原创文章 · 获赞 39 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/yy339452689/article/details/78643572
今日推荐