读书人

java动态署理(Proxy、Invocation)

发布时间: 2012-08-26 16:48:06 作者: rapoo

java动态代理(Proxy、Invocation)

动态代理的作用(个人理解):

可以实现类似拦截器的功能,比如执行某个方法前后,需要执行一些其它操作(如开启关闭事务,记录日志、权限校验等)。

不足(个人理解):

目前仅能创建指定接口的动态代理,如果需要为某个类(该类未实现任何接口)创建动态代理,则无能为力了(实际上通过另外一个开源框架cglib也是可以实现的,只是java本身未提供该功能)。

示例:

接口IHelloWorld

public class Test {public static void main(String[] args) {try {//须用接口来接收IHelloWorld hello = (IHelloWorld)ProxyFactory.getProxyObj(HelloWorld.class.getName());System.out.println("返回结果:"+hello.sayHello("huangqiqing"));} catch (Exception e) {e.printStackTrace();}}}

?

输出结果:

执行public abstract java.lang.String IHelloWorld.sayHello(java.lang.String)之前
执行sayHello()
执行public abstract java.lang.String IHelloWorld.sayHello(java.lang.String)之后
返回结果:hello,huangqiqing

?

读书人网 >其他相关

热点推荐