-
jdk动态代理
查看全部 -
jdk动态代理
查看全部 -
四、cglib动态代理
1、针对类来实现代理。
2、对指定目标类产生一个子类,通过方法拦截技术拦截所有父类方法的调用。
3、final修饰的类不能被继承,所以不能被代理。
4、class CglibProxy implements MethodInterceptor
intercept(Object obj,Method m,Object[] args,MethodProxy proxy);
参数说明:
obj:目标类的实例
m:目标方法的反射对象
args:方法的参数
proxy:代理类的实例
查看全部 -
三、JDK动态代理
1、动态代理的概念:动态产生代理,实现对不同类和不同方法的代理。
2、JDK动态代理:
a、创建事务处理器,实现InvocationHandler接口,覆写invoke方法
invoke(Object proxy,Method method,Object[] args)
参数说明:
proxy 代理对象
Method 被代理对象的方法
args 方法的参数
b、创建被代理的类以及接口
c、调用Proxy的静态方法,创建代理类(这个类是实现了被代理类的接口的)
newProxyInstance(ClassLoader loader,Class[] interfaces,InvocationHandler h)
参数说明:
loader:被代理类的类加载器
interfaces:被代理类实现的接口
h:事务处理器
d、通过代理调用被代理的方法
查看全部 -
三、了解JDK动态代理
1、概念:动态产生代理,实现对不同类,不同方法的代理。
查看全部 -
4、聚合比继承更适合代理模式
如果使用继承的方式实现代理功能的叠加,代理类则会无限的膨胀。
使用聚合的方式实现代理功能的叠加和组合比较方便实用。
查看全部 -
二、静态代理概念及实现
1、两种实现方式
a、静态代理:代理和被代理对象在代理之前是确定的。他们都是实现相同的接口或者继承相同的抽象类。
b、动态代理
2、继承的方式实现静态代理
代理者继承被代理者,对所代理的方法进行改造
Car1 implements Moveable{}
Car2 extends car1{}
3、聚合的方式实现静态代理
继承同一个接口,并持有被代理的对象
Car3 implements Moveable{
private Car car;
public Car3(Car car){
this.car = car
}
}
查看全部 -
一、代理模式概念及分类
1、概念
为其它对象提供一种代理以控制对这个对象的访问
代理对象起到中介作用,可去掉功能服务或增加额外的服务
2、常见的几种代理模式
a、远程代理
b、虚拟代理
c、保护代理
d、智能引用代理
查看全部 -
jdk代理的类必须实现某些接口,cglib的代理通过子类的方式实现代理查看全部
-
Proxy.newProxyInstance用于加载代理对象实例查看全部
-
InvocationHandler有一个invoke方法,有三个参数,分别代表被代理对象、被代理方法、方法参数查看全部
-
聚合方式比继承方式实现代理模式更好查看全部
-
使用聚合方式,实现相同接口,引用原始对象,在相同的方法中调用引用对象的被代理方法查看全部
-
静态代理让真实对象与代理对象实现相同接口且代理对象继承真实对象查看全部
-
eclipse中shift+ctrl+o引入包查看全部
举报