#Spring入门(2)——IOC 容器

1.spring依赖注入概述
  • spring 依赖注入是什么?

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

  • spring IOC 容器

    spring IOC 容器主要分为 “Spring BeanFactory 容器”“ Spring ApplicationContext 容器 ”

2. spring Bean
  • 2.1 pojo

    了解spring Bean 之前先说一下 POJO(Plain OrdinaryJava Object)。
    POJO实质上可以理解为简单的实体类,顾名思义POJO类的作用是方便程序员使用数据库中的数据表,对于广大的程序员,可以很方便的将POJO类当做对象来进行使用,当然也是可以方便的调用其get,set方法。

  • 2.2 spring Bean 定义

    被称作 bean 的对象是构成应用程序的支柱也是由 Spring IoC 容器管理的。bean 是一个被实例化,组装,并通过 Spring IoC 容器所管理的对象。这些 bean 是由用容器提供的配置元数据创建的.

  • 2.3 Spring 配置元数据

    基于 XML 的配置文件。
    基于注解的配置。
    基于 Java 的配置。

  • 2.4 示例
  • 元数据配置
<?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-3.0.xsd">

   <bean id="helloWorld" class="hello.HelloWorld">
       <property name="message" value="Hello World!"/>
   </bean>

</beans>
  • POJO
package hello;

public class HelloWorld {

    private String message;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

}
3. spring bean 作用域
作用域 描述
singleton 在spring IoC容器仅存在一个Bean实例,Bean以单例方式存在,默认值
prototype 每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean()时,相当于执行newXxxBean()
request 每次HTTP请求都会创建一个新的Bean,该作用域仅适用于WebApplicationContext环境
session 同一个HTTP Session共享一个Bean,不同Session使用不同的Bean,仅适用于WebApplicationContext环境
global-session 一般用于Portlet应用环境,改作用于仅适用于WebApplicationContext环境
4.Spring ApplicationContext 容器
  • 5.1 Spring ApplicationContext 概述

    Application Context 是 spring 中较高级的容器。和 BeanFactory 类似,它可以加载配置文件中定义的 bean,将所有的 bean 集中在一起,当有请求的时候分配 bean。 另外,它增加了企业所需要的功能,比如,从属性文件中解析文本信息和将事件传递给所指定的监听器。这个容器在 org.springframework.context.ApplicationContext interface 接口中定义。

  • 5.2 最常被使用的 ApplicationContext 接口实现

    • FileSystemXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你需要提供给构造器 XML 文件的完整路径。
    • ClassPathXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你不需要提供 XML 文件的完整路径,只需正确配置 CLASSPATH 环境变量即可,因为,容器会从 CLASSPATH 中搜索 bean 配置文件。
    • WebXmlApplicationContext:该容器会在一个 web 应用程序的范围内加载在 XML 文件中已被定义的 bean。
  • 5.3 示例

package hello;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestHello {

    public static void main(String[] args) {

        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:Beans.xml");
        HelloWorld helloworld = (HelloWorld) applicationContext.getBean("helloWorld");
        helloworld.setMessage("hello world,my spring first program");
        System.out.println(helloworld.getMessage());

    }
}
5.spring 容器工作原理
  • spring Bean 和Spring IOC 容器结合后如图。
    这里写图片描述
6. 总结
  1. spring 定义了 Bean 通过元数据我们可以装配自己的bean.
  2. Bean 有很多特性,如:生命周期,作用域,继承等,可以根据自己的需求对bean做出修改。
  3. IOC 容器,主要用来实例化Bean 以及解决Bean 之间的依赖问题,让程序实现松耦合。
  4. spring 为容器加载配置文件提供了相应的工具类。 如:ClassPathXmlApplicationContext。
  5. spring 容器的内部原理以及bean 实例化和初始化的更多详细信息需要进一步深入。

完!

猜你喜欢

转载自blog.csdn.net/qq_17639593/article/details/80574501