IoC 容器
Spring 容器是 Spring 框架的核心。容器将创建对象,把它们连接在一起,配置它们,并管理他们的整个生命周期从创建到销毁。Spring 容器使用依赖注入(DI)来管理组成一个应用程序的组件。所有被创建的对象被称为 Spring Beans。
Srping注入:在启动spring容器加载bean的时候,完成对变量赋值的行为。
Spring IoC 容器利用 Java 的 POJO 类和配置元数据来生成完全配置和可执行的系统或应用程序。如下图:
Spring提供了两种不同类型的容器:
- BeanFactory:在org.springframework.beans.factory.BeanFactor中被定义,一个最简单的容器,它主要的功能是为依赖注入 (DI) 提供支持。常用的有XmlBeanFactory,从一个 XML 文件中读取配置元数据。
- ApplicationContext:在 org.springframework.context.ApplicationContext接口被定义。 spring 中较高级的容器。除了有BeanFactory 相同功能之外,还增加了企业所需要的功能。比如,从属性文件中解析文本信息和将事件传递给所指定的监听器。
最常被使用的 ApplicationContext 接口实现:
(1)、FileSystemXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你需要提供给构造器 XML 文件的完整路径。
(2)、ClassPathXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你不需要提供 XML 文件的完整路径,只需正确配置 CLASSPATH 环境变量即可,因为,容器会从 CLASSPATH 中搜索 bean 配置文件。
(3)、WebXmlApplicationContext:该容器会在一个 web 应用程序的范围内加载在 XML 文件中已被定义的 bean。
BeanFactory的使用
第一步:创建一个包,分别创建两个Students.java和Main.java文件。
其中Student.java文件代码如下所示:
private String name;
private String school;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
/**
* 自我介绍
*/
public void selfIntroduction() {
System.out.println("我叫: " + name + ",我来自:" + school + "小学");
}
第二步:在resources目录下创建Beans.xml文件。文件名可以自己取。如图所示:
其中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="students" class="com.hunter.bean.Students">
<property name="name" value="小明"/>
<property name="school" value="清华"/>
</bean>
</beans>
第三步:在Main.java中添加如下代码:(导入相应包)
public static void main(String[] args) {
XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("Beans.xml"));
Students students = (Students) factory.getBean("students");
students.selfIntroduction();
}
第四步:右键运行即可看到如下显示:
简要说明:
(1)利用框架提供的 XmlBeanFactory的API 去生成工厂 bean 以及利用 ClassPathResource() API 去加载在路径 CLASSPATH 下可用的 bean 配置文件。XmlBeanFactory() API 负责创建并初始化所有的对象,即在配置文件中提到的 bean。
(2)利用第一步生成的 bean 工厂对象的 getBean() 方法得到所需要的 bean。 这个方法通过配置文件中的 bean ID 来返回一个真正的对象,该对象最后可以用于实际的对象。一旦得到这个对象,就可以利用这个对象来调用任何方法。