仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 545|回复: 11
打印 上一主题 下一主题

[学习教程] 发布一篇Spring源代码剖析(二):IOC容器在web容器中的启动

[复制链接]
逍遥一派 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:12:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
其实产生见解的过程就是训练自己发现问题,分析问题的能力。根据以上的认识我想谈下传统的学习与通过视频独立学习的优缺点:
以下援用自博客:http://jiwenke-spring.blogspot.com/ 
下面我们剖析了IOC容器自己的完成,上面我们看看在典范的web情况中,SpringIOC容器是如何被载进和起感化的。
复杂的说,在web容器中,经由过程ServletContext为Spring的IOC容器供应宿主情况,对应的创建起一个IOC容器的系统。个中,起首必要创建的是根高低文,这个高低文持有的对象能够有营业对象,数据存取对象,资本,事物办理器等各类两头层对象。在这个高低文的基本上,和webMVC相干还会有一个高低文来保留把持器之类的MVC对象,如许就组成了一个条理化的高低文布局。在web容器中启动Spring使用程序就是一个创建这个高低文系统的历程。Spring为web使用供应了高低文的扩大接口
WebApplicationContext:
代码
publicinterfaceWebApplicationContextextendsApplicationContext{
  //这里界说的常量用于在ServletContext中存取根高低文
  StringROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE=WebApplicationContext.class.getName()+".ROOT";
  ......
  //对WebApplicationContext来讲,必要失掉Web容器的ServletContext
  ServletContextgetServletContext();
}
而一样平常的启动历程,Spring会利用一个默许的完成,XmlWebApplicationContext-这个高低文完成作为在web容器中的根高低文容器被创建起来,详细的创建历程鄙人面我们会具体剖析。
代码
publicclassXmlWebApplicationContextextendsAbstractRefreshableWebApplicationContext{
  /**这是和web部署相干的地位信息,用来作为默许的根高低文bean界说信息的存放地位*/
  publicstaticfinalStringDEFAULT_CONFIG_LOCATION="/WEB-INF/applicationContext.xml";
  publicstaticfinalStringDEFAULT_CONFIG_LOCATION_PREFIX="/WEB-INF/";
  publicstaticfinalStringDEFAULT_CONFIG_LOCATION_SUFFIX=".xml";
  //我们又看到了熟习的loadBeanDefinition,就像我们后面对IOC容器的剖析中一样,这个加载工程在容器的refresh()的时分启动。
  protectedvoidloadBeanDefinitions(DefaultListableBeanFactorybeanFactory)throwsIOException{
    //关于XmlWebApplicationContext,固然利用的是XmlBeanDefinitionReader来对bean界说信息来举行剖析
    XmlBeanDefinitionReaderbeanDefinitionReader=newXmlBeanDefinitionReader(beanFactory);
    beanDefinitionReader.setResourceLoader(this);
    beanDefinitionReader.setEntityResolver(newResourceEntityResolver(this));
    initBeanDefinitionReader(beanDefinitionReader);
    loadBeanDefinitions(beanDefinitionReader);
  }
  protectedvoidinitBeanDefinitionReader(XmlBeanDefinitionReaderbeanDefinitionReader){
  }
  //利用XmlBeanDefinitionReader来读进bean界说信息
  protectedvoidloadBeanDefinitions(XmlBeanDefinitionReaderreader)throwsBeansException,IOException{
    String[]configLocations=getConfigLocations();
    if(configLocations!=null){
      for(inti=0;i<configLocations.length;i++){
        reader.loadBeanDefinitions(configLocations[i]);
      }
    }
  }
  //这里获得bean界说信息地位,默许的中央是/WEB-INF/applicationContext.xml
  protectedString[]getDefaultConfigLocations(){
    if(getNamespace()!=null){
      returnnewString[]{DEFAULT_CONFIG_LOCATION_PREFIX+getNamespace()+DEFAULT_CONFIG_LOCATION_SUFFIX};
    }
    else{
      returnnewString[]{DEFAULT_CONFIG_LOCATION};
    }
  }
}
<p>
为什么外国人还要写那些框架进行代码封装,他们不就是为了别人使用时可以更简单么!如果要达到一个企业级项目的不用框架是很难的。小一些的项目还行,大的光是MVC模式的设计的编码量就够大的了。还有性能方面,单轮windows,这个工具是微软写的,。
海妖 该用户已被删除
沙发
发表于 2015-1-20 17:08:13 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
兰色精灵 该用户已被删除
板凳
发表于 2015-1-24 05:09:12 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
深爱那片海 该用户已被删除
地板
发表于 2015-1-24 12:03:42 | 只看该作者
是一种突破用户端机器环境和CPU
蒙在股里 该用户已被删除
5#
发表于 2015-2-1 09:56:41 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
变相怪杰 该用户已被删除
6#
发表于 2015-2-6 16:17:31 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
分手快乐 该用户已被删除
7#
发表于 2015-2-17 03:49:50 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
再见西城 该用户已被删除
8#
发表于 2015-2-26 11:19:16 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
谁可相欹 该用户已被删除
9#
发表于 2015-3-8 14:03:33 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
小魔女 该用户已被删除
10#
发表于 2015-3-16 00:27:28 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
小妖女 该用户已被删除
11#
发表于 2015-3-22 18:10:43 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
透明 该用户已被删除
12#
发表于 2015-3-22 18:10:44 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-28 19:25

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表