Spring 如何初始化一个容器

转载 2007年09月11日 18:39:00
什么是Spring 的 IOC 容器呢 ?  可以说  BeanFactory 就是 我们看到的Spring IoC容器.

如何初始化 SPRING 的 IOC 容器 ?

一共三种方法 :

1 :
Resource resource = new FileSystemResource("beans.xml");
BeanFactory factory 
= new XmlBeanFactory(resource);


2:

ClassPathResource resource = new ClassPathResource("beans.xml");
BeanFactory factory 
= new XmlBeanFactory(resource);

 
3:

ApplicationContext context = new ClassPathXmlApplicationContextnew String[] {"applicationContext.xml""applicationContext-part2.xml"});
BeanFactory factory 
= (BeanFactory) context;


详细展开 :

一 :org.springframework.core.io包中主要是各样的Resource类



补充UML 知识 :

1:类名是斜体的表示是抽象类,正体的表示普通类

2 :

3 :

   

温昱说图

org.springframework.core.io包中主要是各样的Resource类,Spring的 Resource 接口是为了提供更强的访问底层资源能力的抽象。相当巧妙的地方在于,为何AbstractResource的子类有的override了getFile ()而有的没有?这是因为在AbstractResource的getFile()方法设计为抛出异常,如果子类没有重写此方法,说明子类不支持通过绝对 路径查找资源的方式,而override的子类则提供自己的实现。这里通过类的层次设计,充分利用继承带来的优点,避免了大量的条件语句。


二 :关于 org.springframework.beans.factory 包 和 org.springframework.context 包:

1 :BeanFactory 是个接口,LifecycleBean 是个类它负责管理bean的生命周期,它实现了4个接口,并且有一个 BeanFactory  类型的变量 owningFactory



补充一下 上文 的 XmlBeanFactory 不是

org.springframework.beans.factory

包下面的 而是

org.springframework.beans.factory.xml

下面的

2 。 ApplicationContext 也是个接口,它继承的 ListableBeanFactory  接口 又 继承 BeanFactory 接口

public interface ApplicationContext extends ListableBeanFactory, HierarchicalBeanFactory,  MessageSource, ApplicationEventPublisher, ResourcePatternResolver {
}

public interface ListableBeanFactory extends BeanFactory {
}

        Spring的bean包支持通过编码方式管理和操作bean的基本功能,ApplicationContext则以Framework的方式提供BeanFactory的所有功能。使用
ApplicationContext,你可以让系统加载你的bean,例如:

在Servlet容器初始化ContextLoaderServlet时,通过ContextLoader类加载Spring Framework),而不是使用编码方式来加载。

       ApplicationContext接口是context包的基础,位于org.springframework.context包里,提供了 BeanFactory的所有功能。除此之外, ApplicationContext为了支持Framework的工作方式,提供了以下的功能:

       l.MessageSource,提供了语言信息的国际化支持
      
2.提供资源(如URL和文件系统)的访问支持
      
3.为实现了ApplicationListener接口的bean提供了事件传播支持
      
4.为不同的应用环境提供不同的context,例如支持web应用的XmlWebApplicationContext类
 

spring cloud与spring boot实战

-
  • 1970年01月01日 08:00

Spring容器的初始化4种方式

1.从classpath路径中加载applicationContext.xml文件。 Resource resourc=new ClassPathResource("applicationCon...
  • yang1780409810
  • yang1780409810
  • 2017-04-18 13:53:10
  • 583

Spring之Bean容器初始化以及bean实例的获取

IOC容器主要用到两个包(以Spring3.2为例): 1)spring-beans-3.2.0.RELEASE.jar:主要是BeanFactory及其子类(详细内容参考;http://www.c...
  • zjliwhf
  • zjliwhf
  • 2017-06-02 15:51:44
  • 704

Spring4.3.x 容器在web应用中的初始化过程

概述Spring在web应用中的默认容器类为XmlWebApplicationContext,这个容器类通过xml文件获取所有的配置信息。它的继承结构如下图,(点此查看大图) 在web应用中,不管是...
  • chyohn
  • chyohn
  • 2017-02-08 11:56:39
  • 1208

springMVC的容器初始化过程

http://jwx0925.iteye.com/blog/1003424
  • lin_shi_cheng
  • lin_shi_cheng
  • 2016-02-18 16:14:06
  • 3419

Spring容器初始化过程都做了哪些事儿

1.ClassPathXmlApplicationContext为入口构造方法中有个refresh()方法用来初始化Spring refresh运行的大致流程: Configura...
  • yangliu19920502
  • yangliu19920502
  • 2017-04-01 16:22:21
  • 3019

spring注解和springmvc容器初始化过程

本节主要通过一个自定义注解了解注解是什么,然后简要介绍下spring注解分类和作用,最后简要概括一下web spring容器初始化过程; 1、自定义Annotation_my注解 @Target({E...
  • q_zx1bydcom
  • q_zx1bydcom
  • 2016-09-27 14:55:01
  • 830

当spring 容器初始化完成后执行某个方法

转自:http://blog.csdn.net/fatherican/article/details/9130165         在某些应用中,我们希望,当spring 容器将所有的be...
  • jueane
  • jueane
  • 2014-06-11 09:40:24
  • 4648

Spring 一、 之Bean容器初始化以及bean实例的获取

Spring IOC容器初始化及其所代理的Bean实例的获取 IOC容器主要用到两个包(以Spring3.2为例): 1)spring-beans-3.2.0.RELEASE.jar:主要是BeanF...
  • u012802702
  • u012802702
  • 2016-04-13 18:31:21
  • 2460

容器初始化方法

在日常的C++编码中,我们经常需要创建并初始化一个容器,因此掌握简单快捷的容器初始化或赋值的方法就显得尤为重要。本章内容是从C++标准库和C++Primer摘录比较常用的初始化和赋值方法:1.采用初值...
  • CPriLuke
  • CPriLuke
  • 2018-04-14 09:53:47
  • 11
收藏助手
不良信息举报
您举报文章:Spring 如何初始化一个容器
举报原因:
原因补充:

(最多只允许输入30个字)