发布一篇Spring源代码剖析(二):IOC容器在web容器中的启动
其实产生见解的过程就是训练自己发现问题,分析问题的能力。根据以上的认识我想谈下传统的学习与通过视频独立学习的优缺点:以下援用自博客: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);
}
}
}
//这里获得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,这个工具是微软写的,。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 是一种突破用户端机器环境和CPU 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
页:
[1]