Spring源码阅读笔记(待补充)

来源:互联网 发布:windows10 sql server 编辑:程序博客网 时间:2024/05/22 05:24

阅读Spring源码,不要过于急于掌握,先明白什么是Spring,Spring的本质是什么,对象间关系,为什么要通过IoC这样的方式来管理。

轻量级容器Spring的根本职责是
a、管理业务对象的生命周期。与EJB容器的关键不同,在于轻量级容器可以管理POJO,用不着向EJB那样,还要实现特别的契约。
b、提供寻址功能:由轻量级容器管理的一些对象,需要调用一些“合作者”,这些合作者本身也是由容器管理的,因此,对象与合作者之间的依赖关系,由容器来统一调度。对“控制反转”(IOC)的实现,是轻量级容器的一项核心职责
c、在理想情况下,还要为运行在容器中的对象提供一些企业服务,比如声明式的事务管理,这样就能完全取代EJB最引以为荣的一项优势,这通常由AOP来实现。

Spring BeanFactory统一管理所有bean,bean可以被定义为singleton或者non-singleton的,前者每次都共享同一个对象,后者每次都会new一个新对象。
BeanFactory包含5个方法:
 boolean containsBean(String);
 Object getBean(String);
 Object getBean(String,Class):获得指定名称的bean,并将其转化为指定的类型。
 Object isSingleton(String);
 String[] getAliases(String);

web容器启动IOC容器过程:使用ContextLoaderListener作为载入器,方法为contextInitialized(ServletContextEvent event),交给ContextLoader处理,方法为initWebApplicationContext(ServletContext context),其中,先创建根webApplicationContext,类型为ConfigurableWebApplicationContext,再设置它的父上下文环境,然后配置所有必要的属性,包括ServletContext,ConfigLocation等,然后调用refresh完成该上下文的初始化,最后将它注册到servletContext中,完成IOC容器的启动。

web层应该很薄,应该搭建在服务器上面,其代码只是用来解释用户操作,显示响应的结果。