Spring 容器是 Spring 框架的核心。
容器将创建对象,把它们连接在一起,配置它们,并管理他们的整个生命周期从创建到销毁。Spring 容器使用依赖注入(DI)来管理组成一个应用程序的组件。这些对象被称为 Spring Beans。
Spring 提供了以下两种不同类型的容器:
①BeanFactory 容器
②ApplicationContext 容器
※ApplicationContext容器包括BeanFactory容器的所有功能,一般建议使用ApplicationContext容器。BeanFactory容器多用于移动设备或基于 applet 的应用程序。
大量对 BeanFactory 接口的实现中,最常被使用的是 XmlBeanFactory 类。
这个容器从一个 XML 文件中读取配置元数据,由这些元数据来生成一个被配置化的系统或者应用。
在资源宝贵的移动设备或者基于 applet 的应用当中, BeanFactory 会被优先选择。否则,一般使用的是 ApplicationContext。
示例:
XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("beans.xml"));
HelloWorld hw = (HelloWorld)factory.getBean("helloWorld");
hw.getMessage();
最常被使用的 ApplicationContext 接口实现:
・FileSystemXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你需要提供给构造器 XML 文件的完整路径。
・ClassPathXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,不需要提供 XML 文件的完整路径,只需正确配置 CLASSPATH 环境变量即可,因为,容器会从 CLASSPATH 中搜索 bean 配置文件。
・WebXmlApplicationContext:该容器会在一个 web 应用程序的范围内加载在 XML 文件中已被定义的 bean。
FileSystemXmlApplicationContext的示例:
ApplicationContext context = new FileSystemXmlApplicationContext("D:/eclipse/microyum/HelloSpring/src/beans.xml"); HelloWorld hw = (HelloWorld)context.getBean("helloWorld"); hw.getMessage();
ClassPathXmlApplicationContext的示例:
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); HelloWorld hw = (HelloWorld)context.getBean("helloWorld"); hw.getMessage();
===================================================================
HelloWorld类:
public class HelloWorld { private String message; public void getMessage() { System.out.println("Your Message : " + message); } public void setMessage(String message) { this.message = message; } }
beans.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="helloWorld" class="com.microyum.HelloWorld"> <property name="message" value="Hello World" /> </bean> </beans>