aop思想以及环境搭建(记录自己的一小步)1.1

什么是aop思想?

首先老办法我们一起先看看官网是咋描述的?
它利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为“Aspect”,即方面。所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。AOP代表的是一个横向的关系,如果说“对象”是一个空心的圆柱体,其中封装的是对象的属性和行为;那么面向方面编程的方法,就仿佛一把利刃,将这些空心圆柱体剖开,以获得其内部的消息。而剖开的切面,也就是所谓的“方面”了。然后它又以巧夺天功的妙手将这些剖开的切面复原,不留痕迹。
用通俗易懂的话说aop思想就是指 “纵向重复,横向抽取
画个图我们来解释一下吧
这里写图片描述
如上图,过滤器1=过滤器2=过滤器3 =过滤器。代码重复严重,我们就把重复的代码拿出来,放到一个通知里,如果我们需要的话就调用他。这样达到了快捷简单有效的方法。

Spring着手搭建aop

首先引入我们的jar包
这里写图片描述
https://download.youkuaiyun.com/download/qq_36622149/10638299

接下来我们再学习一下aop的黑话(名词介绍):
这里写图片描述
接下来我们就需要开始准备我们的advice和point cut 对象了。这些名词的意思若看不懂请看下图,每一个颜色的框框代表其中指向的代码
这里写图片描述
在这里插入图片描述

如果大家对本帖有什么疑问欢迎加入我们的交流群共同探讨 欢迎加入外包项目交流群,群聊号码:698466938
下面我们需要着手准备两个对象,一个是接口对象(本例用的是userservice),另一个是通知对象,也就是advice。
userservice
转载请保留原贴地址,https://blog.youkuaiyun.com/qq_36622149/article/details/82258210谢谢。


@Repository("userservice") 
public class UserservierImpl implements UserService { 
	@Override
	public void savedata() {
		System.out.println("这里是需要增强的代码,因为如果保存我,需要打开事务才可以。");
	}

}

advice

@Component("myadvice")
public class Myadvice {
	public void before () {  
		System.out.println("这里是增强的代码,也就是重复代码。(打开事务)");
	}
}

这里写图片描述
转载请保留原贴地址,https://blog.youkuaiyun.com/qq_36622149/article/details/82258210谢谢。

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd ">
 <context:component-scan base-package="cn.tsu"></context:component-scan>  
<aop:config>
	<aop:pointcut expression="execution(* cn.tsu.serviceImpl.*servierImpl.*(..))" id="es"/>  
	<aop:aspect ref="myadvice">
			<aop:before method="before" pointcut-ref="es"/>
	</aop:aspect>
</aop:config>
</beans>

最后再发一下Demo的junit测试。

@RunWith(SpringJUnit4ClassRunner.class) //使用junit4直接创建aoolication容器,不需要自己创建了
										//相当于ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
@ContextConfiguration("classpath:applicationContext.xml")
public class AopDemo {
	
	@Resource(name="userservice")  //相当于注入内容userservice us = (Userservice) ac.getBean("userservice");   
	public UserService us;   //这里是接口父类,不是impl。  直接注入内容
	
	@Test 
	public void test() {
			us.savedata(); 
	}
	
}

运行结果:
这里写图片描述

这里除了before方法,还有其他方法,一共有5种方法,大家有兴趣的可以自己再百度测试一下。如果大家对本帖有什么疑问欢迎加入我们的交流群共同探讨 欢迎加入外包项目交流群,群聊号码:698466938。

转载请保留原贴地址,https://blog.youkuaiyun.com/qq_36622149/article/details/82258210谢谢。

如果大家对本帖有什么疑问欢迎加入我们的交流群共同探讨 欢迎加入外包项目交流群,群聊号码:698466938。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值