本文共 4725 字,大约阅读时间需要 15 分钟。
是Spring 框架的核心。
容器将创建对象,把它们连接在一起,配置它们,并管理他们的整个生命周期从创建到销毁。Spring 容器使用依赖注入(DI)来管理组成一个应用程序的组件Spring Beans。通过阅读配置元数据提供的指令,容器知道对哪些对象进行实例化,配置和组装。
配置元数据可以通过 XML,Java 注释或 Java 代码来表示。 下图是 Spring 如何工作的高级视图。IOC 容器具有依赖注入功能的容器,它可以创建对象,IOC 容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。
通常new一个实例,控制权由程序员控制,而"控制反转"是指new实例工作不由程序员来做而是交给Spring容器来做。
在Spring中BeanFactory是IOC容器的实际代表者。
Spring 提供了以下两种不同类型的容器。容器 | 描述 |
---|---|
Spring BeanFactory | 它是最简单的容器,给 DI 提供了基本的支持,它用 org.springframework.beans.factory.BeanFactory 接口来定义。BeanFactory 或者相关的接口,如 BeanFactoryAware,InitializingBean,DisposableBean,在 Spring 中仍然存在具有大量的与 Spring 整合的第三方框架的反向兼容性的目的。 |
Spring ApplicationContext | 该容器添加了更多的企业特定的功能,例如从一个属性文件中解析文本信息的能力,发布应用程序事件给感兴趣的事件监听器的能力。该容器是由 org.springframework.context.ApplicationContext 接口定义。 |
ApplicationContext 容器包括 BeanFactory 容器的所有功能,所以通常建议超过 BeanFactory。BeanFactory 仍然可以用于轻量级的应用程序,如移动设备或基于 applet 的应用程序,其中它的数据量和速度是显著。
这是一个最简单的容器,它主要的功能是为依赖注入 (DI) 提供支持,这个容器接口在 org.springframework.beans.factory.BeanFactor 中被定义。
BeanFactory 和相关的接口,比如BeanFactoryAware、DisposableBean、InitializingBean,仍旧保留在 Spring 中,主要目的是向后兼容已经存在的和那些 Spring 整合在一起的第三方框架。 在 Spring 中,有大量对 BeanFactory 接口的实现。 其中,最常被使用的是 XmlBeanFactory 类。 这个容器从一个 XML 文件中读取配置元数据,由这些元数据来生成一个被配置化的系统或者应用。 在资源宝贵的移动设备或者基于 applet 的应用当中, BeanFactory 会被优先选择。 否则,一般使用的是 ApplicationContext,除非你有更好的理由选择 BeanFactory。步骤 | 描述 |
---|---|
1 | 创建一个名为 HelloSpring 的工程并在 src 文件夹下新建一个名为 com.briup.spring的包。 |
2 | 点击右键,选择 Add External JARs 选项,导入 Spring 的库文件。 |
3 | 在 com.briup.spring包下创建 HelloWorld.java 和 MainApp.java 两个类文件。 |
4 | 在 src 文件夹下创建 Bean 的配置文件 Beans.xml |
5 | 创建所有 Java 文件和 Bean 的配置文件的内容,运行应用程序。 |
HelloWorld.java
package com.briup.spring;public class HelloWorld { private String message; public void setMessage(String message){ this.message = message; } public void getMessage(){ System.out.println("Your Message : " + message); }}
MainApp.java
package com.briup.spring;import org.springframework.beans.factory.xml.XmlBeanFactory;import org.springframework.core.io.ClassPathResource;@SuppressWarnings("deprecation")public class MainApp { public static void main(String[] args) { XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("Beans.xml")); HelloWorld obj = (HelloWorld) factory.getBean("helloWorld"); obj.getMessage(); }}
Bean.xml
Application Context 是 BeanFactory 的子接口,也被称为 Spring 上下文。
Application Context 是 spring 中较高级的容器。 和 BeanFactory 类似,它可以加载配置文件中定义的 bean,将所有的 bean 集中在一起,当有请求的时候分配 bean。 另外,它增加了企业所需要的功能,比如,从属性文件中解析文本信息和将事件传递给所指定的监听器。这个容器在 org.springframework.context.ApplicationContext interface 接口中定义。 ApplicationContext 包含 BeanFactory 所有的功能,一般情况下,相对于BeanFactory,ApplicationContext 会更加优秀。当然,BeanFactory 仍可以在轻量级应用中使用,比如移动设备或者基于 applet 的应用程序。最常被使用的 ApplicationContext 接口实现:
步骤 | 描述 |
---|---|
1 | 创建一个名为 HelloSpring 的工程, 在 src 下新建一个名为 com.briup.spring 的包 |
2 | 点击右键,选择 Add External JARs 选项,导入 Spring 的库文件。 |
3 | 在 com.briup.spring 文件夹下创建 HelloWorld.java 和 MainApp.java 两个类文件。 |
4 | 文件夹下创建 Bean 的配置文件 Beans.xml。 |
5 | 编辑所有 JAVA 文件的内容和 Bean 的配置文件,运行应用程序。 |
HelloWorld.java
package com.briup.spring;public class HelloWorld { private String message; public void setMessage(String message){ this.message = message; } public void getMessage(){ System.out.println("Your Message : " + message); }}
MainApp.java
package com.briup.spring;import org.springframework.context.ApplicationContext;import org.springframework.context.support.FileSystemXmlApplicationContext;public class MainApp { public static void main(String[] args) { ApplicationContext context = new FileSystemXmlApplicationContext ("G:/briup-code/work1-workspace/HelloSpring/src/Beans.xml"); HelloWorld obj = (HelloWorld) context.getBean("helloWorld"); obj.getMessage(); }}
Beans.xml
转载地址:http://bxpen.baihongyu.com/