|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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,这个工具是微软写的,。 |
|