spring aop思想提出的动机

业务场景:

监控某些类中重要函数的执行时间,并以短信的方式通知相关人员。

该怎样实现呢?

或许有的朋友会说,很简单嘛。直接在方法体内添加发送短信的代码就ok了。

但是,如果需要监控的重要函数很多呢?那是不是得在每个重要函数里都手动添加上发送短信的代码呢?

再就是,需求变了,要把发送短信改成发送邮件呢?那该怎么办?

如果这时,监控的目标函数也发生了变化该怎么办呢?

所以将代码写死,不是一个程序设计的好思想。

那么,Aop思想将可以用来很好地解决这个问题,它对于该需求的实现过程是这样的:

(1)将要监控的函数定义为切点,也就是说把要监控的函数当作接入点,并且定义到配置文件中去,这样就我们可以动态地修改切点了。
(2)为包含接入点的目标对象定义Aop代理(实际上可以只定义一个Aop代理来作为多个目标对象的代理)
(3)将发送短信的代码封装为一个类的方法(我们称之为通知方法),并且抽取该类的接口,然后我们在实际编码中使用的是接口,并把具体的通知类定义到配置文件中去,这样有便于我们以后做扩展。
(4)实现Aop代理的invoke方法,并在invoke中调用接入点方法,且在调用之后接着调用通知的方法(也就是发短信或者发邮件的方法)。

好了,对于刚才我们引入的需求,运用Aop思想,其大致的实现就是上面几步。那么,当需求变更为“发送邮件”时,我们只需要改变一下配置文件中的通知类就可以了;当要监控的函数需要改变时,我们也只需要改一下配置文件中对于切点的配置就可以了。 

下面,我们来看一下Aop思想的一个简单实现的例子(该例子利用Aop思想完成一件事就是当我们调用UserDao对象的saveUser方法时,系统会进行日志记录): 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans">
<bean id="UserDao" class="AopTest.UserDao"></bean>
<bean id="LogTool" class="AopTest.LogTool"></bean>
<aop id="logging" ref="LogTool" pointCut="UserDao.*" method="before"></aop>
</beans>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值