论坛首页 Java企业应用论坛

Spring技术内幕——深入解析Spring架构与设计原理(一)IOC实现原理

浏览 44672 次
精华帖 (4) :: 良好帖 (2) :: 新手帖 (5) :: 隐藏帖 (2)
作者 正文
   发表时间:2009-11-08  
huangtian549 写道

对这本书很期待!
如果12月上旬出版,可能已经定稿了,但还想提个建议, 希望书中多分析一下代码为什么这么实现,不为了读代码而读代码,多告诉大家一下框架这么设计有什么好处,明白了好处以后,才能在以后设计出适合自己的框架,提高自己的代码质量,我想可能是大家对spring源代码感兴趣的原因,(也许作者就是这么写的,那就多说了)
反正我是对一本能解析Spring源码的书是很期待的,出版后我会立刻去买的。


刚刚脱稿,已经到编辑那里了,是在平时手记基础上做的挖掘。意图是希望理出一条SPRING实现的基本脉络,依托源代码的相关解读,毕竟源代码是最可信赖的。
0 请登录后投票
   发表时间:2009-11-09  
anykey1009 写道
gogole_09 写道
anykey1009 写道
public abstract class AbstractXmlApplicationContext extends AbstractRefreshableConfigApplicationContext {   
    public AbstractXmlApplicationContext() {   
    }   
    public AbstractXmlApplicationContext(ApplicationContext parent) {   
        super(parent); 
    }   
    //这里是实现loadBeanDefinitions的地方   
    protected void loadBeanDefinitions(DefaultListableBeanFactory beanFactory) throws IOException {   
        // Create a new XmlBeanDefinitionReader for the given BeanFactory.   
        // 创建 XmlBeanDefinitionReader,并通过回调设置到 BeanFactory中去,创建BeanFactory的使用的也是 DefaultListableBeanFactory。   
        XmlBeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReader(beanFactory);   
  
        // Configure the bean definition reader with this context's   
        // resource loading environment.   
        // 这里设置 XmlBeanDefinitionReader, 为XmlBeanDefinitionReader 配置ResourceLoader,因为DefaultResourceLoader是父类,所以this可以直接被使用   
        beanDefinitionReader.setResourceLoader(this);   
        beanDefinitionReader.setEntityResolver(new ResourceEntityResolver(this));   
  
        // Allow a subclass to provide custom initialization of the reader,   
        // then proceed with actually loading the bean definitions.   
    // 这是启动Bean定义信息载入的过程   
        initBeanDefinitionReader(beanDefinitionReader);   
        loadBeanDefinitions(beanDefinitionReader);   
    }   
  
    protected void initBeanDefinitionReader(XmlBeanDefinitionReader beanDefinitionReader) {   
    }  


这个类一直没看明白,跟上下有什么联系吗?
继续研究中。。。够我学一阵的了

PS:我是spring新手,这个类我看是个abstract类啊,那么this指的什么呢?顺便帮我补下java基础^_^

一般来说,在抽象类中使用this 通常是获取的子类吧, 我记得struts1.x的DispatcherAction类也使用过类似的技巧来获取它指定执行的是哪个方法. 附件有我以前自己仿的一个例子,可以下去看看,写得比较简单,只是描述了下大概的实现过程。



嗯。。谢谢啊,例子我看过了,又学到了点东西[color=red],貌似反射在框架中用的挺多的吧。。。
PS:楼主有没有出视频的意向。。哈哈,我看这大篇幅的文字,头都大了[/color]


  曾经听一个人说过,框架的基本实现无非就是 反射+xml ,虽然有点牵强,但是观看大部分框架,这两部分确实实实在在都存在的。
   楼主出视频的话,相信又可以带我们升一个层次啦。…… 哈哈,所以同样支持在出书的基础上,加上视频版解说,比较很多东西来说,语言总比文字直观很多。 一言胜千文啊。
0 请登录后投票
   发表时间:2009-11-10  
出视频是个好主意,不知道作者是否有时间操作?
0 请登录后投票
   发表时间:2009-11-15  
linux1689 写道
出视频是个好主意,不知道作者是否有时间操作?

呵呵,现在还是集中精力,先把要出的书弄好吧。只有两点希望,一是和大家分享,二是虽然网上已经有不少的资料,但对我们这些从小就习惯从书本学习的人,有一本书,看起来会舒服些。但是,买书需要读者花钱,这可和网上不一样,所以责任感觉不一样啊,“无功不受禄”,还是希望能够尽力做到物有所值吧。
0 请登录后投票
   发表时间:2009-12-10  
代码基本可以看懂,但看完没撒感觉,没有那种全局感。可能功力还是不够吧。
0 请登录后投票
   发表时间:2009-12-11  
zhangyou1010 写道
代码基本可以看懂,但看完没撒感觉,没有那种全局感。可能功力还是不够吧。

惭愧惭愧,是我写得大局感不够。我个人感觉,线是串起来了,面却没有形成。的确是功力的问题,要努力啊!
0 请登录后投票
   发表时间:2009-12-11  
写得真好,不知道楼主能不能写一篇关于阅读开源框架源代码具体方法的文章,新手不知道如何下手
0 请登录后投票
   发表时间:2009-12-11  
baishuo491 写道
写得真好,不知道楼主能不能写一篇关于阅读开源框架源代码具体方法的文章,新手不知道如何下手

谢谢鼓励啊!我是使用ECLIPSE+SVN来从Spring的代码库里下载的,基本的过程,我都写在书里了,到时书上市了,去翻翻看看就行了,大概有一章吧,篇幅不多,基本上算是我看源代码的一点经验吧。
0 请登录后投票
   发表时间:2009-12-29  
anykey1009 写道
public abstract class AbstractXmlApplicationContext extends AbstractRefreshableConfigApplicationContext {   
    public AbstractXmlApplicationContext() {   
    }   
    public AbstractXmlApplicationContext(ApplicationContext parent) {   
        super(parent); 
    }   
    //这里是实现loadBeanDefinitions的地方   
    protected void loadBeanDefinitions(DefaultListableBeanFactory beanFactory) throws IOException {   
        // Create a new XmlBeanDefinitionReader for the given BeanFactory.   
        // 创建 XmlBeanDefinitionReader,并通过回调设置到 BeanFactory中去,创建BeanFactory的使用的也是 DefaultListableBeanFactory。   
        XmlBeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReader(beanFactory);   
  
        // Configure the bean definition reader with this context's   
        // resource loading environment.   
        // 这里设置 XmlBeanDefinitionReader, 为XmlBeanDefinitionReader 配置ResourceLoader,因为DefaultResourceLoader是父类,所以this可以直接被使用   
        beanDefinitionReader.setResourceLoader(this);   
        beanDefinitionReader.setEntityResolver(new ResourceEntityResolver(this));   
  
        // Allow a subclass to provide custom initialization of the reader,   
        // then proceed with actually loading the bean definitions.   
    // 这是启动Bean定义信息载入的过程   
        initBeanDefinitionReader(beanDefinitionReader);   
        loadBeanDefinitions(beanDefinitionReader);   
    }   
  
    protected void initBeanDefinitionReader(XmlBeanDefinitionReader beanDefinitionReader) {   
    }  


这个类一直没看明白,跟上下有什么联系吗?
继续研究中。。。够我学一阵的了

PS:我是spring新手,这个类我看是个abstract类啊,那么this指的什么呢?顺便帮我补下java基础^_^

这个类我也没怎么看懂放在这儿有什么意思,可能是为了举例说明“IoC容器的高级表现形式”的吧,希望楼主给出明确的解答。
0 请登录后投票
   发表时间:2010-01-01  
这个类是ApplicationContext的基类,封装了很多基本的上下文处理过程。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics