动态代理和AOP01

如要转载请标明作者zjrodger和出处:http://blog.youkuaiyun.com/zjrodger/,谢谢微笑

                                                  笔记目录
· AOP和动态代理技术简介
(·代理的概念和作用
(·) AOP介绍
(·如何使用动态代理技术



· AOP和动态代理技术简介

(·代理的概念和作用
(1)生活中的代理
   从联想代理商那里买东西和直接跑到北京联想总部去买东西。
(2)程序中的代理
     1)  要为已经存在的多个具有相同接口的目标类(target类)的各个方法增加一些系统功能,例如,异常处理、日志、计算方法的运行时间、 事务管理、等等。
    2)  编写一个与目标类具有相同结构的代理类,代理的每个方法调用目标类的相同方法,并在调用方法时加上额外的系统功能的代码。
代理类中的方法名应该与目标类中的方法名相同。
    代理类和目标类实现了相同的接口,即代理类和目标类对外具有 相同的方法
    在客户端进行编程时,不是直接引用Target类的方法,也不是直接引用Proxy类的方法,而是引用“接口”。

 3) 如果采用工厂模式和配置文件的方式进行管理,则不需要修改客户端程序,在配置文件中配置是使用目标类还是代理类,这样,
以后很容易切换,譬如,想要日志功能时,就配置代理类,否配,就配置目标类,这样,增加系统功能就很容易,以后运行一段时间后,又想去掉系统功能也很容易。  

(·) AOP介绍
1.  系统中存在交叉业务,一个交叉业务就是要切入到系统中的一个方面,如下图所示:

2. 用具体的程序代码描述交叉业务:

3.交叉业务的变成问题,即为面向方面的编程(Aspect Oriented Programming),简称AOP,
AOP的目标就是要使交叉业务模块化。可以将“ 交叉业务切面代码”移动到原始方法的周围,
这与直接在方法中编写切面代码的运行效果是一样的,如下图所示:
【切面代码移动
【切面代码移动
4. 交使用代理技术正好可以解决这种问题,代理是实现AOP功能的核心和关键技术。

(·如何使用动态代理技术
1. 要为系统中的各个接口的类增加代理功能,那将需要太多的代理类,全部采用静态代理方式,将会是一件非常麻烦
的事情。写成千上百个代理类,非常累。JVM可以在运行期动态生成出类的字节码,这种动态生成的类往往被用做代理类,即动态代理类。
2. JDK动态代理 只能为接口创建动态代理。
3. JVM实现的动态类必须实现一个或者多个接口(这样就可以知道生成的动态类中都包含哪些方法),所以,JVM生成的动态类只能用于 代理具有相同接口的目标类
(即如何告诉JVM要动态生成的那个类中都包含哪些方法?  通过让动态类实现一个或者多个类的接口。)
4. CGLIB库可以动态生成一个类的子类,一个类的子类也可以用作该类的代理,所以,如果要为一个没有实现接口的类生成动态代理,
那么可以使用CGLIB库。  





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值