Spring学习之Spring IoC 容器(BeanFactory 容器)(4)

IoC 容器

Spring 容器是 Spring 框架的核心。容器将创建对象,把它们连接在一起,配置它们,并管理他们的整个生命周期从创建到销毁。Spring 容器使用依赖注入(DI)来管理组成一个应用程序的组件。所有被创建的对象被称为 Spring Beans。

Srping注入:在启动spring容器加载bean的时候,完成对变量赋值的行为。

Spring IoC 容器利用 Java 的 POJO 类和配置元数据来生成完全配置和可执行的系统或应用程序。如下图:


ioc1.jpg

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文件。


QQ截图20180522221859.png

其中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文件。文件名可以自己取。如图所示:


QQ截图20180522222417.png
QQ截图20180522222434.png

其中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();
    }

第四步:右键运行即可看到如下显示:


QQ截图20180522222824.png

简要说明:

(1)利用框架提供的 XmlBeanFactory的API 去生成工厂 bean 以及利用 ClassPathResource() API 去加载在路径 CLASSPATH 下可用的 bean 配置文件。XmlBeanFactory() API 负责创建并初始化所有的对象,即在配置文件中提到的 bean。
(2)利用第一步生成的 bean 工厂对象的 getBean() 方法得到所需要的 bean。 这个方法通过配置文件中的 bean ID 来返回一个真正的对象,该对象最后可以用于实际的对象。一旦得到这个对象,就可以利用这个对象来调用任何方法。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.1 spring IoC容器和beans的简介 Spring 框架的最核心基础的功能是IoC(控制反转)容器,...
    simoscode阅读 6,838评论 2 22
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,418评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,249评论 6 342
  • 坚强有路 ——小城散漫表达系列之“有路” 火山 从化电台的黎俊主持在微信预告7月24晚10点半,有太平人寿卓金环经...
    朱明云阅读 630评论 0 4
  • 你舍了翅膀,来到我身旁,深深扎根在我的心房。 我拥着你,伴着你成长,看着你恢复飞翔的力量。 不管是多麽的不舍,只要...
    素味三生阅读 225评论 0 0

友情链接更多精彩内容