浅谈 Spring IoC 容器理解
相信接触过Spring框架的程序猿,肯定会接触容器这个概念,那么这个Spring容器究竟是什么呢?
Spring IoC 容器
Spring 容器是 Spring 框架的核心。容器将创建对象,把它们连接在一起,配置它们,并管理他们的整个生命周期从创建到销毁。Spring 容器使用依赖注入(DI)来管理组成一个应用程序的组件。(看完抽象概念可能多少会有点懵,别着急,再往下看看)
Spring IoC 容器具体化
Spring 提供了以下两种不同类型的容器,分别是:
- BeanFactory
- ApplicationContext
BeanFactory 容器
这是一个最简单的容器,它主要的功能是为依赖注入 (DI) 提供支持,这个容器接口在 org.springframework.beans.factory.BeanFactor 中被定义。
在 Spring 中,有大量对 BeanFactory 接口的实现。其中,最常被使用的是 XmlBeanFactory 类。这个容器从一个 XML 文件中读取配置元数据,由这些元数据来生成一个被配置化的系统或者应用。轻松实现 BeanFactory
//利用 ClassPathResource() 去加载在路径 CLASSPATH 下可用的 bean 配置文件
XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("spring.xml"));
ApplicationContext 容器
Application Context 是 BeanFactory 的子接口,也被成为 Spring 上下文。
Application Context 是 spring 中较高级的容器。和 BeanFactory 类似,它可以加载配置文件中定义的 bean,将所有的 bean 集中在一起,当有请求的时候分配 bean。
最常被使用的 ApplicationContext 接口实现(用来加载Spring配置文件):
- FileSystemXmlApplicationContext(默认文件路径): 该容器从 XML 文件中加载已被定义的 bean。在这里,你需要提供给构造器 XML 文件的完整路径。
ClassPathXmlApplicationContext(默认类路径): 该容器从 XML 文件中加载已被定义的 bean。在这里,你不需要提供 XML 文件的完整路径,只需正确配置 CLASSPATH 环境变量即可,因为,容器会从 CLASSPATH 中搜索 bean 配置文件。
//默认类路径加载Spring配置文件,classpath:(可以省略)
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(“spring.xml”);//默认文件路径加载Spring配置文件,file:(可以省略)
FileSystemXmlApplicationContext ftx = new FileSystemXmlApplicationContext(“spring/src/spring.xml”);
Tips:代码展示的是默认情况下Spring配置文件加载路径,但是,如果ClassPathXmlApplicationContext
加载时指定file:(文件路径)
,也是可以成功加载的;相对应FileSystemXmlApplicationContext
加载时指定classpath:(类路径)
也可以完成加载。
如果是Web项目加载Spring配置文件:
<!-- 加载配置文件 同时需要配置监听器 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
小结
Spring IoC 容器就是某个实现了 ApplicationContext
接口的类的实例;也可以说 Spring IoC 容器实际上就是 ApplicationContext(实例化对象)
还没有评论,来说两句吧...