首页 > 编程语言 > 详细

有关Spring的ioc理解之代理模式

时间:2020-06-11 03:25:53      阅读:64      评论:0      收藏:0      [点我收藏+]

AOP代理模式可以实现事务控制和业务逻辑代码横切。

使用代理模式,动态代理实现横切。

什么是代理?

接口就是指定要做的事情,要实现的逻辑。

代理类似于房源租房

public interface ZuFang{

//我需要一个一室一厅的房子
public void rentHouse( );
}
//比如租房,就是接口。

//你需要租房就要实现租房接口,自己实现再nev一个自己去租房。

public class ZuFangImpl implements ZuFang{

@Override

Dublic void rentHouse() {

System.out.println("我要租个室一厅的房子");

 

介,他帮你租房,他的目标也是实现接口租到房子,它可以帮你租房做点事情,收点服务费,之后也可以做点事情,这就是方法增强。(poxy)

public class ZuFangZJ implements ZuFang{

//接口

private ZuFang zufang;

public ZuFangZJ (ZuFang zufang){this. zufang = zufang;}

@Override
public void rentHouse() {

System.out.println("我是中介,我要收雇租客代理费");

zufang.rentHouse();

System.out.println("我是中介,我要收雇房东代理费" );
    }
}

测试实现:

public static void main(String[] args) {

ZuFang renter = new ZuFangImpl();

//把自己信息给他他去找
ZuFangZJ zhongjie =new ZuFangZJ(renter);
zhongjie. rentHouse();
    }
}

 

这就是静态代理每一种业务都需要一 一个实现类去完成实现类去。每个不用代理,要不同

动态代理:

1.jdk动态代理

public class ProxyFactory

//代理工厂实现代理对象

private ProxyFactory(){};

private static ProxyFactory proxyFactory;
public static ProxyFactory getInStance( ){
if(proxyFactory = null){
proxyFactory = new ProxyFactory();
}
return proxyFactory;
}
public Object getJDKProxyInstance( Object o)(return Proxy . newProxyInstance(o getClass( ). getClassLoader(),o. getClass().getInterfaces(),new InvocationHandler(){
//Method就是调用的的方法
public 0bject invoke(0bject arg0, Method arg1, Object[] arg2)throws Throwable (
Object result = null;
//逻辑增强
Systen.out.printIn("我是租房公司,我要收雇租客代理费");
result = argl.invoke(o, arg2);
System.out.println(”我是租房公司,我要收雇房东代理费");
return result;
        }
    })
}

 

2.cglib

第一个数据是委托类型class,第二个参数是方法拦截,实现那他的内部类就可以实现方法增强和jdk代理-样。

所有代理模式进行代理返回的都是代理模式的代理类,

都可以对原有的方法再代理中实现代理增强,也就是aop思想的实现

有关Spring的ioc理解之代理模式

原文:https://www.cnblogs.com/badfisher/p/13089838.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!