舒大少博客

一个95后少年的个人博客

当前时间为:
欢迎大家来到舒大少博客http://admin.evshou.com,广告合作以及淘宝商家推广请微信联系15357240395
...
零基础学Python从入门到精通 python基础教程基础

【在售价】34.90 元
【在售价】34.90 元

立即领券
...
Python编程从入门到精通 视频教学 python语言程序设计

【在售价】29.80 元
【券后价】19.80元

立即领券
...
未来教育计算机二级ms office题库电子版c语言

【在售价】28.00 元
【在售价】28.00 元

立即领券
...
Python3视频零基础教程自学入门到精通编程语言程序设计网络爬虫

【在售价】62.00 元
【券后价】52.00元

立即领券
...
Python编程从入门到精通 零基础学python数据分析

【在售价】29.80 元
【券后价】19.80元

立即领券

2020java框架教程之spring代理模式

2020-12-24 17:00:31
swq1822677238

手机扫码查看

2020java框架教程之spring代理模式

2020java框架教程之spring代理模式

概念:

将核心功能与辅助功能(事务、日志、性能监控代码)分离,达到核心业务功能更纯粹、辅助业务功能可复用。

静态代理设计模式

通过代理类的对象,为原始类的对象(目标类的对象)添加赋值功能,更容易更换代理实现类、利于维护。

例如:

1.创建房东接口(租房方法)以及接口实现类(发布租房信息、收房租业务)

2.创建代理类(FangDongProxy)实现房东接口

3.创建测试类:创建代理类,调用租房方法


动态代理设计模式

动态创建代理类的对象,为原始类的对象添加辅助功能。

1.JDK动态代理实现(基于接口)

@Test
public void TestJDK(){
    //目标
    FangDongService fds=new FangDongServiceImpl();
    //额外功能
    InvocationHandler ii=new InvocationHandler() {
        @Override
        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            //辅助功能、额外功能
            System.out.println("发布租房信息");
            System.out.println("带租客看房");
            //核心
            fds.zufang();
            return null;
        }
    };
    //动态生成代理类
    FangDongService proxy = (FangDongService)Proxy.newProxyInstance(Tests.class.getClassLoader(),
            fds.getClass().getInterfaces(), ii);
    proxy.zufang();
}

2.CGlib代理(基于继承)

a.导入spring依赖

b.测试

@Test
public void TestCGLIB(){
    //目标
    FangDongService fds=new FangDongServiceImpl();
    //
    Enhancer enhancer = new Enhancer();
    enhancer.setSuperclass(FangDongServiceImpl.class);
    enhancer.setCallback(new org.springframework.cglib.proxy.InvocationHandler() {
        @Override
        public Object invoke(Object o, Method method, Object[] objects) throws Throwable {
            //辅助功能、额外功能
            System.out.println("发布租房信息2");
            System.out.println("带租客看房2");
            //核心
            fds.zufang();
            return null;
        }
    });
    //动态生成代理类
    FangDongServiceImpl proxy = (FangDongServiceImpl) enhancer.create();
    proxy.zufang();
}

发表评论

邮箱地址不会被公开。 必填项已用*标注