电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

框架源码分析

138页
  • 卖家[上传人]:1818****572
  • 文档编号:119504463
  • 上传时间:2020-01-17
  • 文档格式:DOCX
  • 文档大小:663.60KB
  • / 138 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、Spring核心知识Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式)轻量级开源框架。为什么说Spring是一个一站式的轻量级开源框架呢?EE开发可分成三层架构,针对JavaEE的三层结构,每一层Spring都提供了不同的解决技术。WEB层:SpringMVC业务层:Spring的IoC持久层:Spri

      2、ng的JDBCTemplate(Spring的JDBC模板,ORM模板用于整合其他的持久层框架)从上面的简要介绍中,我们要知道Spring的核心有两部分:IoC:控制反转。 举例来说,在之前的操作中,比方说有一个类,我们想要调用类里面的方法(不是静态方法),就要创建类的对象,使用对象调用方法实现。对于Spring来说,Spring创建对象的过程,不是在代码里面实现的,而是交给Spring来进行配置实现的。AOP:面向切面编程。SpringAOP原理AOP编程技术什么是AOP编程AOP: Aspect Oriented Programming 面向切面编程。面向切面编程(也叫面向方面):Aspect Oriented Programming(AOP),是目前软件开发中的一个热点。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。AOP是OOP的延续,是(Aspect Oriented Programming)的缩写,意思是面向切面(方面)编程。主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。主

      3、要的意图是:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改 变这些行为的时候不影响业务逻辑的代码。可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。假设把应用程序想成一个立体结构的话,OOP的利刃是纵向切入系统,把系统划分为很多个模块(如:用户模块,文章模块等等),而AOP的利刃是横向切入系统,提取各个模块可能都要重复操作的部分(如:权限检查,日志记录等等)。由此可见,AOP是OOP的一个有效补充。注意:AOP不是一种技术,实际上是编程思想。凡是符合AOP思想的技术,都可以看成是AOP的实现。Aop, aspect object programming 面向切面编程功能: 让关注点代码与业务代码分离!关注点关注点,重复代码就叫做关注点;切面 关注点形成的类,就叫切面(类)! 面向切面编程,就是指 对很多功能都有的

      4、重复的代码抽取,再在运行的时候网业务方法上动态植入“切面类代码”。切入点执行目标对象方法,动态植入切面代码。可以通过切入点表达式,指定拦截哪些类的哪些方法; 给指定的类在运行的时候植入切面类代码。AOP底层实现原理 代理设计模式什么是代理模式通过代理控制对象的访问,可以详细访问某个对象的方法,在这个方法调用处理,或调用后处理。既(AOP微实现) ,AOP核心技术面向切面编程。代理模式应用场景SpringAOP、事物原理、日志打印、权限控制、远程调用、安全代理 可以隐蔽真实角色代理的分类静态代理(静态定义代理类)动态代理(动态生成代理类)Jdk自带动态代理Cglib 、javaassist(字节码操作库)静态代理什么是静态代理由程序员创建或工具生成代理类的源码,再编译代理类。所谓静态也就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。静态代理代码public interface IUserDao void save();public class UserDao implements IUserDao public void save() System.o

      5、ut.println(已经保存数据.);代理类public class UserDaoProxy implements IUserDao private IUserDao target;public UserDaoProxy(IUserDao iuserDao) this.target = iuserDao;public void save() System.out.println(开启事物.);target.save();System.out.println(关闭事物.);动态代理什么是动态代理1.代理对象,不需要实现接口2.代理对象的生成,是利用JDK的API,动态的在内存中构建代理对象(需要我们指定创建代理对象/目标对象实现的接口的类型)3.动态代理也叫做:JDK代理,接口代理JDK动态代理1)原理:是根据类加载器和接口创建代理类(此代理类是接口的实现类,所以必须使用接口 面向接口生成代理,位于java.lang.reflect包下) 2)实现方式: 1. 通过实现InvocationHandler接口创建自己的调用处理器 IvocationHandler handler = n

      6、ew InvocationHandlerImpl(); 2. 通过为Proxy类指定ClassLoader对象和一组interface创建动态代理类Class clazz = Proxy.getProxyClass(classLoader,new Class); 3. 通过反射机制获取动态代理类的构造函数,其参数类型是调用处理器接口类型Constructor constructor = clazz.getConstructor(new ClassInvocationHandler.class); 4. 通过构造函数创建代理类实例,此时需将调用处理器对象作为参数被传入Interface Proxy = (Interface)constructor.newInstance(new Object (handler);缺点:jdk动态代理,必须是面向接口,目标业务类必须实现接口/ 每次生成动态代理类对象时,实现了InvocationHandler接口的调用处理器对象 public class InvocationHandlerImpl implements InvocationHandler

      7、private Object target;/ 这其实业务实现类对象,用来调用具体的业务方法/ 通过构造函数传入目标对象public InvocationHandlerImpl(Object target) this.target = target;public Object invoke(Object proxy, Method method, Object args) throws Throwable Object result = null;System.out.println(调用开始处理);result = method.invoke(target, args);System.out.println(调用结束处理);return result;public static void main(String args) throws NoSuchMethodException, SecurityException, InstantiationException,IllegalAccessException, IllegalArgumentException, Invocation

      8、TargetException / 被代理对象IUserDao userDao = new UserDao();InvocationHandlerImpl invocationHandlerImpl = new InvocationHandlerImpl(userDao);ClassLoader loader = userDao.getClass().getClassLoader();Class interfaces = userDao.getClass().getInterfaces();/ 主要装载器、一组接口及调用处理动态代理实例IUserDao newProxyInstance = (IUserDao) Proxy.newProxyInstance(loader, interfaces, invocationHandlerImpl);newProxyInstance.save();CGLIB动态代理原理:利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。什么是CGLIB动态代理使用cglibCode Generation Library实现

      9、动态代理,并不要求委托类必须实现接口,底层采用asm字节码生成框架生成代理类的字节码CGLIB动态代理相关代码public class CglibProxy implements MethodInterceptor private Object targetObject;/ 这里的目标类型为Object,则可以接受任意一种参数作为被代理类,实现了动态代理public Object getInstance(Object target) / 设置需要创建子类的类this.targetObject = target;Enhancer enhancer = new Enhancer();enhancer.setSuperclass(target.getClass();enhancer.setCallback(this);return enhancer.create();public Object intercept(Object obj, Method method, Object args, MethodProxy proxy) throws Throwable System.out.println(开启事物);Object resu

      《框架源码分析》由会员1818****572分享,可在线阅读,更多相关《框架源码分析》请在金锄头文库上搜索。

      点击阅读更多内容
    TA的资源
  • 武汉专版七年级英语下册Unit1Canyouplaytheguitar第四课时作业课件新版人教新目标

    武汉专版七年级英语下册Unit1Canyouplaytheguitar第四课时作业课件新版人教新目标

  • 山西专版七年级英语下册Unit5Whydoyoulikepandas第三课时作业课件新版人教新目标

    山西专版七年级英语下册Unit5Whydoyoulikepandas第三课时作业课件新版人教新目标

  • 武汉专版七年级英语下册Unit1Canyouplaytheguitar第二课时作业课件新版人教新目标

    武汉专版七年级英语下册Unit1Canyouplaytheguitar第二课时作业课件新版人教新目标

  • 武汉专版七年级英语下册Unit5Whydoyoulikepandas第四课时作业课件新版人教新目标

    武汉专版七年级英语下册Unit5Whydoyoulikepandas第四课时作业课件新版人教新目标

  • 武汉专版七年级英语下册Unit5Whydoyoulikepandas第一课时作业课件新版人教新目标

    武汉专版七年级英语下册Unit5Whydoyoulikepandas第一课时作业课件新版人教新目标

  • 山西专版七年级英语下册Unit5Whydoyoulikepandas单元写作专项作业课件新版人教新目标

    山西专版七年级英语下册Unit5Whydoyoulikepandas单元写作专项作业课件新版人教新目标

  • 山西专版七年级英语下册Unit1Canyouplaytheguitar特色题型组合练作业课件新版人教新目标

    山西专版七年级英语下册Unit1Canyouplaytheguitar特色题型组合练作业课件新版人教新目标

  • 九年级历史上册第一单元古代亚非文明第3课古代尤作业课件新人教

    九年级历史上册第一单元古代亚非文明第3课古代尤作业课件新人教

  • 九年级历史上册第五单元走向近代第13课西欧经济和社会的发展作业课件新人教

    九年级历史上册第五单元走向近代第13课西欧经济和社会的发展作业课件新人教

  • 山西专版七年级英语下册Unit12Whatdidyoudolastweekend单元语法专项作业课件新版人教新目标

    山西专版七年级英语下册Unit12Whatdidyoudolastweekend单元语法专项作业课件新版人教新目标

  • 山西专版七年级英语下册Unit1Canyouplaytheguitar单元写作专项作业课件新版人教新目标

    山西专版七年级英语下册Unit1Canyouplaytheguitar单元写作专项作业课件新版人教新目标

  • 九年级历史下册第四单元经济大危机和第二次世界大战第14课法西斯国家的侵略扩张作业课件新人教版202105181

    九年级历史下册第四单元经济大危机和第二次世界大战第14课法西斯国家的侵略扩张作业课件新人教版202105181

  • 九年级历史上册第四单元封建时代的亚洲国家第11课古代日本作业课件新人教

    九年级历史上册第四单元封建时代的亚洲国家第11课古代日本作业课件新人教

  • 八年级英语下册Module1FeelingsandimpressionsUnit2IfeelnervouswhenIspeakChinese小册子作业课件新版外研版

    八年级英语下册Module1FeelingsandimpressionsUnit2IfeelnervouswhenIspeakChinese小册子作业课件新版外研版

  • 八年级英语下册Module9FriendshipUnit1CouldIaskifyou'vementionedthistoher小册子作业课件新版外研

    八年级英语下册Module9FriendshipUnit1CouldIaskifyou'vementionedthistoher小册子作业课件新版外研

  • 九年级化学上册第1章开启化学之门第3节怎样学习和研究化学第1课时课件沪

    九年级化学上册第1章开启化学之门第3节怎样学习和研究化学第1课时课件沪

  • 山西专版七年级英语下册Unit1Canyouplaytheguitar第二课时作业课件新版人教新目标

    山西专版七年级英语下册Unit1Canyouplaytheguitar第二课时作业课件新版人教新目标

  • 九年级历史下册第三单元第一次世界大战和战后初期的世界第11课苏联的社会主义建设教学课件新人教

    九年级历史下册第三单元第一次世界大战和战后初期的世界第11课苏联的社会主义建设教学课件新人教

  • 九年级历史上册第五单元走向近代第16课早期殖民掠夺作业课件新人教

    九年级历史上册第五单元走向近代第16课早期殖民掠夺作业课件新人教

  • 2021春七年级历史下册第二单元辽宋夏金元时期民族关系发展和社会变化第12课宋元时期的都市和文化习题课件新人教版

    2021春七年级历史下册第二单元辽宋夏金元时期民族关系发展和社会变化第12课宋元时期的都市和文化习题课件新人教版

  • 点击查看更多
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.