`
yourenyouyu2008
  • 浏览: 287606 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

面试整理

 
阅读更多

设计模式

1)代理模式

对原始类进行功能扩展,但是对外暴漏的接口不变。不改变原始类的功能,只是对功能进行补充。

spring mybatis 中SqlSessionTemplate 代理SqlSession,增加自动事务处理和自动close。

seam 扩展的EntityManager。

实现方式1,使用java.lang.reflect.Proxy.newProxyInstance

Proxy只能对接口生成代理类(动态生成class,比如$proxy13,会根据接口名称缓存,同样的接口只会生成一次class)。

 

public static Object newProxyInstance(ClassLoader loader,
                      Class<?>[] interfaces,
                      InvocationHandler h)

使用方式:创建代理类后直接调用接口的响应方法

this.sqlSessionProxy = (SqlSession) newProxyInstance(xxxClassLoader(),
        new Class[] { SqlSession.class },
        new SqlSessionInterceptor());

sqlSessionProxy.methodxxx(xxx....);

代理类实际生成的代码中有对应的接口方法,比如methodxxx(xxx....),方法体可能的内容是:只是调用

InvocationHandler public Object invoke(Object proxy, Method method, Object[] args)方法,这样就将控制全

移交到了SqlSessionInterceptor中,Object proxy参数就是动态类实例本身($proxy13的实例),一般情况下

不会使用该参数,在方法中能获取到的信息就是SqlSessionInterceptor实例本身和Method method, Object[] args,如何对实例进行代理呢?只能通过SqlSessionInterceptor实例本身获得要代理的原始类实例,通过SqlSessionInterceptor实例的属性构造出代理类实例或者在直接要代理的实例放入SqlSessionInterceptor中

SqlSessionInterceptor的大概实现如下

。。。


sqlSession=xxxx;//创建sqlSession所需的信息由SqlSessionInterceptor实例本身提供

Object result = method.invoke(sqlSession, args);

afterDoSomething(); 

 

下面的示例是在构造代理对象时将要代理的实例放入InvocationHandler中

  1. public class MyProxy {  
  2.     private MyHandler myHandler;  
  3.       
  4.     public void setMyHandler(MyHandler myHandler) {  
  5.         this.myHandler = myHandler;  
  6.     }  
  7.   
  8.     public Object getProxy(Object target){  
  9.         myHandler.setObj(target);  
  10.         return Proxy.newProxyInstance(MyProxy.class.getClassLoader(),   
  11.                                     target.getClass().getInterfaces(),   
  12.                                     myHandler);  
  13.     }  

 

分享到:
评论

相关推荐

    cc++面试整理(非常经典)

    在C++面试中,面试官通常会关注申请者对语言基础、数据结构、算法、内存管理、模板、STL、多线程、异常处理、设计模式等多方面的理解和应用能力。...通过阅读“cc++面试整理.txt”文件,可以进一步细化学习和准备。

    JAVA面试整理,吐血整理

    在给定文件的内容中,我们可以提取出关于Java面试的多个重要知识点,以下是针对提供的部分内容的详细知识点: 1. Java的“无关性”特性: - Java的宣传口号“Write once, run anywhere”体现了Java的平台无关性,...

    Android技术面试整理-葵花宝典.pdf

    Android 技术面试整理的葵花宝典涵盖了Android开发者在求职面试中可能遇到的各种核心知识点。以下是基于前19题的常考知识点的详细解析: 1. **Android四大组件**: - **Activity**:是应用程序与用户交互的界面,...

    华为面试整理(全集)

    【华为面试整理(全集)】的资料涵盖了通信基础、网络技术、电话网体制和信令系统等多个方面,这些都是华为面试尤其是技术岗位可能涉及到的重要知识点。 1. **语音信号数字化**:语音信号的数字化过程包括采样、...

    java面试整理资料

    这份"java面试整理资料"涵盖了大量与Java编程语言和面试相关的知识点,旨在帮助求职者或希望提升技能的开发者准备面试。以下是一些关键知识点的详细说明: 1. **基础语法**:Java的基础包括变量、数据类型、运算符...

    C++面试整理.zip

    《C++面试整理》 在IT行业中,C++作为一门强大的系统级编程语言,一直备受企业和开发者青睐。针对C++的面试,不仅考察了应聘者的编程能力,还涉及到对语言特性的深入理解、设计模式的应用以及算法分析等多个方面。...

    study.rar Android2020最新面试整理

    "study.rar Android2020最新面试整理"这个压缩包包含的资源显然是一份精心整理的Android面试指南,旨在帮助求职者准备面对2020年及以后的Android面试挑战。这份资料可能包括了最新的技术趋势、必备的编程知识以及...

    面试整理.md

    面试整理.md

    面试整理1.zip

    这份名为“面试整理1.zip”的压缩包文件,显然包含了一份精心准备的面试指南,旨在帮助求职者提升在Android面试中的竞争力。以下是对其中可能涉及的知识点的详细解读: **Android基础** 1. **Activity生命周期**:...

    Python 面试整理.pdf

    pytho面试整理 import numpy as np import tensorflow as tf # 深度学习库 from captcha.image import ImageCaptcha # 用来生成验证码 import matplotlib.pyplot as plt # 用来将验证码可视化出来 from PIL import ...

    微谷百腾四大公司笔试面试整理大全2014

    【微谷百腾四大公司笔试面试整理大全2014】是针对求职者尤其是对进入大公司有意向的应聘者的一份宝贵资源。这个资料集合可能涵盖了2014年微谷百腾四大公司(假设这四家公司为重要的IT或科技企业)在招聘过程中所使用...

    中兴5G中级面试整理.pdf

    《中兴5G中级面试整理》是一份针对中兴通讯5G技术面试的参考资料,涵盖了5G网络中的关键技术和操作实践。以下是对其中知识点的详细解释: 1. **身份验证**:在5G网络中,身份验证是保障网络安全的重要环节,涉及到...

    Java面试整理(二).ppt

    Java面试整理(二).ppt

    中级面试整理.md

    中级面试整理.md

    经典嵌入式笔试面试整理.zip

    "经典嵌入式笔试面试整理.zip"这个压缩包文件显然包含了对这些关键知识点的汇集,旨在帮助求职者准备2020年的秋季招聘。以下是对这些知识点的详细解释: 1. **C语言**:作为嵌入式开发的基础,C语言是编写高效、...

    2011-2012Android技术面试整理

    2011-2012Android技术面试整理技术面试整理--附有详细答案(包括百度、新浪、中科软等多家公司笔试面试题

    关于java的面试整理

    关于java的面试整理

    微软笔试面试整理题.txt

    根据给定文件的信息,本文将围绕“微软笔试面试整理题”的相关内容进行展开,重点解析微软笔试面试中的几个关键方面:技术基础知识考查、智力题目、英语能力以及想法类题目,并给出一些建议。 ### 技术基础知识考查...

    2011Android技术面试整理附有答案

    2011Android技术面试整理附有详细答案(包括百度、新浪、中科软等多家公司笔试面试题

Global site tag (gtag.js) - Google Analytics