spring理解一

spring基本工作原理如下:

1.查找bean配置文件

2.加载bean配置文件并解析生成中间表示BeanDefinition

3.注册beanDefinition

4.如果是单例或lazy-init=false,则直接生成bean

spring将

1.查找bean配置文件

2.加载bean配置文件并解析生成中间表示BeanDefinition

3.注册beanDefinition

这三部分开,可以提供更多的定制给用户。

spring将配置文件之类的文件资源抽象成一个Resource,封装了getInputStream,isClose等方法。

Resource有子类ClasspathResouce及FileSystemResource

Resouce解决了第一步查找bean配置文件的问题

接着要解决第二步载bean配置文件并解析生成中间表示BeanDefinition。

spring这个是通过BeanDefinitionReader(接口)去做。

BeanDefinitionReader有实现XmlBeanDefinitionReader等。

XmlBeanDefinitionReader有个参数为容器BeanRegistry用于存放解析后的BeanDefinition。

即BeanDefinitionReader可以分三步完成第二步任务:1.将Resource中的inputStream解析成xml的Dom形式 2.根据Dom,生成BeanDefinition 3.注册到BeanRegistry中

这里将resource解析成Dom是用另一个类DefaultDocumentLoader去做。解析xml生成BeanDefinition则交给:BeanDefinitionParserDelegate去做。

注册BeanDefinition就简单了,因为BeanRegitry容器是做为参数进入XmlBeanDefinitionReader的,所以直接调就可以了。

可以看出spring设计XmlBeanDefinitionReader类时,将这个类的职责分解,并将每一部分任务交给相应的类去做。

例子:

ClassPathResource res=new ClassPathResource("containerTest.xml"); //定位资源

DefaultListableBeanFactory factory=new DefaultListableBeanFactory(); //BeanRegistry容器

XmlBeanDefinitionReader reader=new XmlBeanDefinitionReader(factory); //

int n=reader.loadBeanDefinitions(res); //触发,XmlBeanDefinitionReader加载,解析配置文件,生成BeanDefinition的动作

B b=(B) factory.getBean("b");

spring理解一

时间: 2024-11-06 09:38:26

spring理解一的相关文章

spring理解

Struts与Hibernate可以做什么事? Struts,Mvc中控制层解决方案,可以进行请求数据自动封装.类型转换.文件上传.效验… Hibernate,持久层的解决方案:可以做到,把对象保存到数据库,从数据库中取出的是对象. 传统的开发模式 基于mvc模式进行项目开发: 基于mvc的项目框架结构:Entity / dao / service / action 遇到的问题: 1. 对象创建创建能否写死? 2. 对象创建细节 对象数量 action  多个   [维护成员变量] servic

Spring理解?

(1)Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架,是解决企业应用开发的复杂性,为J2EE应用提供了全方位的整合框架,在Spring框架下实现多个子框架的组合. (2)Spring通过控制反转(IoC)的技术促进了松耦合,当使用IoC一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象. (3)Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发.为JavaBean提供了一个更好的应用配置框

面试-Spring理解

转!!!! http://hui.sohu.com/infonews/article/6331404387079946240 ---------- spring呢,是pivotal公司维护的一系列开源工具的总称,最为人所知的是spring mvc,事实上,他们都是基于spring framework,并且再其上继续增强,为某一方面服务的java组件.最近spring framework 刚升级到5,非常不错.比较常见的有spring boot,spring mvc,spring webFlux.

目前对SpringMVC和Spring的理解-第一节

写标题之前还特意百度了一下,我这么写标题会不会有bug,可能是作为一个低端码农的职业病吧. 好,那我就来写写我对springMvc和spring的理解 干了也三年多javaweb开发了,都是在tomcat上忙乎j2ee这些东西.当我们将代码由ecplise编译成class文件放到tomcat下后,启动tomcat,jvm加载tomcat需要的jar.class,搜索到到我们的项目,接着加载我们项目的class(这里不知道如果是war包放上去是怎么样一个过程),加载完成后启动tomcat,启动我们

Spring的历史论

目前很多公司的架构,从Struts2迁移到了SpringMVC.你有想过为什么不使用Servlet+JSP来构建Java web项目,而是采用SpringMVC呢? 既然这样,我们从源头说起.Struts2的源头其实也是Servlet.Servlet的作用是接收浏览器传给服务端的请求(request),并将服务端处理完的响应(response)返回给用户的浏览器,浏览器和服务端之间通过http协议进行沟通,其过程是浏览器根据用户的选择将相关信息按http协议报文的规范组装请求的http报文,报文

为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?

今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架 由struts2迁移到springMVC,我突然有了一个新的疑问无法得到正确的解释,为什么我们现在做java的web开发,会选择struts2或 者springMVC这样的框架,而不是使用servlet加jsp这样的技术呢?特别是现在我们web的前端页面都是使用velocity这样的模板语 言进行开发,抛弃了jsp,这样的选择又会给我们java的web开发带

Spring不能给sessionFactory注入值的问题,以及org.hibernate.HibernateException: createQuery is not valid without active transaction异常

在Struts2+Spring3+Hibernate4的框架下,本来想在DAO中通过setter注入,给sessionFactory赋值,但是却出现NullPointerException的异常.经过调试,发现sessionFactory的值为null.后来发现,原来在service层中,这个DAO类的对象是通过new得来的,而不是通过Spring注入的.因此这个new出来的DAO对象,没有被Spring注入sessionFactory,必然它的sessionFactory为空了.于是改为由Sp

Spring浅谈

spring技术可以说是java企业开发里最重要的技术,不过真的理解spring的作用和意义还真是一件麻烦的事情,很多人对spring理解其实都是停留在使用阶段(例如:声明式事务很好用等等),当今的spring技术生态环境里可谓是蔚为壮观,spring已经包罗万象,它的内容之多完全不亚于它的本源java语言了,而spring这么大的框都是建立在ioc和aop技术之上,只有深入理解了这两个技术我们才能明白为什么spring这个框能装的下那么多东西了. 首先是ioc,ioc技术第一个解释叫做控制反转

为什么使用spring Struts 等框架开发

转载自:http://www.cnblogs.com/sharpxiajun/p/3936268.html 今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框 架由struts2迁移到springMVC,我突然有了一个新的疑问无法得到正确的解释,为什么我们现在做java的web开发,会选择struts2 或者springMVC这样的框架,而不是使用servlet加jsp这样的技术呢?特别是现在我们web的前端页