`
jiwenke
  • 浏览: 400669 次
  • 性别: Icon_minigender_1
  • 来自: 南京
博客专栏
4ee69929-b8e1-3eb5-bbca-157d075d6192
Spring技术内幕——深...
浏览量:182738
D1c226f7-74e9-3ec4-a15b-18a45ccd88c5
随笔:Spring与云计算...
浏览量:26296
社区版块
存档分类
最新评论

Spring源代码分析的PDF版本发布

阅读更多
方便大家阅读,请多留言,多指正!
分享到:
评论
50 楼 judyfun 2015-03-09  
  太厉害了。。。大牛崇拜
49 楼 zhoupuyue 2011-10-27  
佩服佩服!
48 楼 zeyonq 2011-09-01  
感谢分享!
47 楼 wupuyuan 2011-08-30  
多谢分享!
46 楼 luey 2011-07-19  
感谢楼主分享
45 楼 asm 2009-03-17  
真是谢谢楼主啊,最近在看spring,
44 楼 szboy 2009-03-15  
得好好看下分析了,Spring还不是很熟
43 楼 weidewei 2009-02-02  
好东西!收藏!!!
42 楼 ybbid 2009-01-30  
感谢LZ,分析的不错.
41 楼 enigma1228 2009-01-10  
很好的东西啊,正想看看呢~~~多谢了!
40 楼 leeldy 2009-01-06  
顶了先。。。
39 楼 ytl 2009-01-03  
真的太感谢LZ啦
38 楼 sunshineparasol 2008-12-31  
37 楼 yxw820816 2008-12-24  
多谢楼主,我自己琢磨总是有很多地方不明白,看了楼主的文章,豁然开朗,听君一席话,胜读十年书啊
36 楼 evil850209 2008-12-07  
好人呀,谢谢楼主

35 楼 hailang43 2008-12-06  
谢谢楼主分享
34 楼 caiceclb 2008-12-06  
lz够细致,源码分析可不容易
33 楼 hugjchina 2008-12-05  
非常感谢贡献!
32 楼 peachming 2008-12-05  
thanks a lot for shareing
31 楼 netfork 2008-12-05  
jiwenke 写道
引用
比如,目标对象的构造函数的参数也是一个没有默认构造函数的类时,我们为了将这个类实例化,还需要进一步对这个参数类进行反射,取出其构造方法的参数类型(是什么类),如果不幸,这个类也没有默认构造函数,我们可能还需要进一步反射它的构造函方法的参数类型,...直到我们找到一个存在默认构造函数的类或只是一个接口时,实例化它(接口的话,我们需要借助于CGLIB实例化,非接口应该无所谓),然后一步一步再往前逐一实例化之前没法实例化的类,最终才能够完成对目标对象参数的实例化。
但是,如果在实例化各个参数的参数的过程中,最终一个参数既没有实现接口,也没有默认构造函数时,就完蛋了,因为最后的这个参数,我们没法实例化他,这样,之前的一系统参数,我们也无法实例化,最终,对于目标对象的参数,我们没法给他构造出实实在在的对象,于时,目标对象类的子类对象,我们是无法生成的。整个代理过程失败。


我想如果只有一层代理的话,没有这个逐层的过程啊。你说的参数对象实例话是应该由依赖注入来完成的,他不见得是用CGLIB来实现,如果是正常的依赖注入的话,可以使用类装载器直接实例话就可以了。当然如果参数也是CGLIB的代理类的话,另当别论。



~~~~
由于我对自己的java水平也没多少信心,所以不知道我所理解的不可行的地方到底对不对。
楼主看着帮忙分析一下吧。

目的:实例化子类,也就是生成子类的对象。
拥有资源:只有目标对象,当然这个目标对象是一个没有默认构造方法的类的对象。
具体的步骤:
1、利用目标对象,借助于CGLIB生成其子类。
  目前来讲,CGLIB应该只是照葫芦画瓢,并没有再给这个子类添加一个默认构造方法,仅仅是覆盖了一下目标对象类的构造函数。其实,我个人认为,CGLIB增加一个可以自动强制为子类添加默认构造方法应该不算难事,但是目前来讲,我想CGLIB肯定没有提供这种生成子类的方法,否则Spring的这个aop失败的情况就不会有了。
2、实例化生成的子类。
  由于子类的构造方法也是带参数的,如果想用实例化他的话,必须要提供参数对象,但是,此时参数对象并不能拿到啊。因为唯一的资源“目标对象”的构造方法的参数是包在其对象里的,并没有提供get方法,我们拿不到的(这点,其实也是构造函数注入的初衷,就是被注入的东西不可变),于是,我想我们还必须想法搞到子类构造方法的参数的对象,这样,就有了我上面的关于反复反射直到能找到能生产对象的那一刻,才能回过头来,把所有的对象给实例化出来。
  没有默认构造方法的类,要想实现实例化,我个人的知识范围是需要提供构造函数参数对象的。如果有其他技巧可以在没有参数对象的情况实例化出没有默认构造函数的类的对象,我想,确实就没必须反复反射,去找那个根对象了。

  跟楼主讨论问题,引发了我很多的思考,真的很爽,也加深了认识。谢谢!

相关推荐

    Spring源码分析.pdf

    Spring 源码分析 Spring 框架是 Java 语言中最流行的开源框架之一,它提供了一个强大且灵活的基础设施来构建企业级应用程序。在 Spring 框架中,IOC 容器扮演着核心角色,本文将深入分析 Spring 源码,了解 IOC ...

    Spring核心源码解析.pdf

    本篇文档将对Spring框架的核心源码进行解析,以帮助开发者更深入地理解Spring的工作原理和核心概念。 首先,Spring框架通过使用IoC容器来管理应用对象的创建和依赖关系。这种做法可以让程序员从创建对象的复杂性中...

    Spring源码解析.pdf

    ### Spring源码解析知识点 #### 一、Spring IoC 容器详解 ##### 1. BeanFactory —— 最基础的IoC容器 - **概念**:`BeanFactory` 是Spring框架中最基本的IoC容器,它负责管理Bean的生命周期,包括创建、配置和...

    Spring源码深度解析第二版

    Spring源码深度解析第二版 Spring是一款广泛应用于Java企业级应用程序的开源框架,旨在简化Java应用程序的开发和部署。Spring框架的核心主要包括了IoC容器、AOP、MVC框架等模块。 第1章 Spring整体架构和环境搭建 ...

    Spring5 源码分析(第 2 版)-某Tom老师

    《Spring5 源码分析(第 2 版)》是某Tom老师精心编写的深度解析文档,旨在帮助读者全面理解Spring5的核心机制和设计理念。Spring作为Java领域最为广泛应用的框架之一,其源码的深入理解对于开发者来说至关重要。这篇...

    Spring源码解析.zip

    本压缩包“Spring源码解析”提供了对Spring框架核心组件——IOC(Inversion of Control,控制反转)、AOP(Aspect Oriented Programming,面向切面编程)以及Transaction(事务管理)的源码分析,帮助开发者更全面地...

    Spring5 源码分析(第 2 版) .zip

    《Spring5 源码分析(第 2 版)》是针对Spring框架第五个主要版本的深度解析著作,由知名讲师倾心打造,旨在帮助读者深入理解Spring框架的内部工作机制,提升对Java企业级应用开发的专业技能。本书涵盖了Spring框架的...

    spring源代码解析十.pdf

    这篇源代码解析主要关注Spring Acegi中AuthenticationProcessingFilter的实现,它是Web页面验证的核心部分。AuthenticationProcessingFilter是Servlet Filter接口的实现,主要用于在请求到达目标资源之前进行身份...

    Spring MVC源码深度剖析开源架构源码2021.pdf

    本知识点将围绕Spring MVC的源码深度剖析展开,详细介绍Spring MVC的源码结构、工作原理以及如何进行源码分析。 首先,要理解Spring MVC是如何启动和配置的。在web.xml文件中配置了DispatcherServlet,这是Spring ...

    深入剖析Spring Web源码 pdf高清版(第二版)

    《深入剖析Spring Web源码》(第二版) 是一本针对Java开发者深度解析Spring Web框架核心原理的权威指南。这本书详细解读了Spring MVC和Spring WebFlux两大核心模块的源码,帮助读者理解Spring如何实现高效的Web应用...

    springmvc深入解析.pdf

    Spring MVC深入解析 Spring MVC是一个基于模型-视图-控制器(MVC)模式的Web应用程序框架,是Spring Framework的一部分。它提供了一个灵活的方式来构建Web应用程序,使得开发者可以轻松地创建复杂的Web应用程序。 ...

    springbatch 详解PDF附加 全书源码 压缩包

    通过阅读《Spring.Batch批处理框架.pdf》和源码,你将能够掌握 Spring Batch 的核心概念和实践技巧,为你的企业级应用开发带来高效、可靠的批量处理能力。同时,源码可以直接运行,提供了动手实践的机会,加深理解和...

    Spring源码总结.pdf

    在Spring源码中,容器的加载方式、XML属性配置的解析过程以及自定义标签的处理是核心知识点。 1. **Spring容器加载方式**: - **ClassPathXmlApplicationContext**: 通过类路径加载XML配置文件,适用于传统的Java...

    spring security 3.1 PDF 英文版,源代码.7z

    标题中的“spring security 3.1 PDF 英文版,源代码.7z”指的是一个关于Spring Security 3.1的PDF文档,包含了该框架的详细文档,并且附带了源代码。这为开发者提供了一个深入学习和理解Spring Security 3.1的机会,...

    spring揭秘 附带spring源码获取方式

    最近在看spring源码 搜集了这一本大家都推荐的《spring揭秘》PDF 非常不错,同时附带spring源码下载地址 以及编译方式,照着做就可以,本人已经测试; ps spring 涉及动态代理、反射、设计模式之类的先弄懂再看,...

    Spring5.pdf

    Spring 是一个开源的轻量级Java应用框架,其最初由Rod Johnson创建,并在2003年首次发布。...官方的下载地址和GitHub地址也提供了从源代码到二进制构建的入口,便于开发者获取最新版本的Spring框架。

    Spring IoC源码深度剖析开源架构源码2021.pdf

    标题《Spring IoC源码深度剖析开源架构源码2021.pdf》和描述《Spring IoC源码深度剖析开源架构源码2021.pdf》表明该文档主要面向于分析Spring框架中控制反转(IoC)容器的核心源码,解析和理解其内部的工作机制及...

    spring源码

    Spring框架是Java开发中的核心组件,它为应用程序提供了一个全面的基础设施,支持...通过分析源码,开发者还可以了解到如何设计和实现一个可扩展、可维护的框架,这对于提升自身的技术水平和解决问题的能力大有裨益。

Global site tag (gtag.js) - Google Analytics