码迷,mamicode.com
首页 > 编程语言 > 详细

[译]6-Spring IOC容器

时间:2015-05-05 10:11:03      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

Spring容器是Spring框架的核心。Spring容器负责对象的创建、装配、以及生命周期的管理。Spring容器使用

依赖注入来管理组成应用程序的组件。Spring容器管理的这些对象我们称之为Bean.

 

Spring容器通过读取配置元数据得知需要对哪些对象进行初始化、配置、装配等。配置元数据可以是xml配置文

件、java注解、java代码。下面这张图从较高的层面展示了Spring容器的工作原理,Spring容器使用POJO和配

置元数据来产生经过充分配置的、可运行的系统或应用程序.

技术分享

Spring框架提供了两种Spring IOC容器.

  • Spring BeanFactory Container
    最简单的IOC容器,提供了最基本的依赖注入的功能.由org.springframework.beans.factory.BeanFactory
    接口进行定义.现在用的比较少,但是为了向后兼容性,Spring中还是保留了BeanFactory、BeanFactoryAware
    、InitializingBean、DisposableBean。
  • Spring ApplicationContext Container
    由org.springframework.context.ApplicationContext interface接口进行定义。除了具备BeanFactory的
    功能外,还增加了许多额外的功能,如,从属性文件中解析文本信息、支持事件订阅。

下面将分别介绍这两个IOC容器

BeanFactory容器

Spring提供了多个BeanFactory接口的实现类,最常用的一个是XmlBeanFactory,XmlBeanFactory从xml配置

文件中读取bean的信息并进行相应的处理。

一般情况下推荐使用ApplicationContext容器,而不使用BeanFactory容器,除非你在手机或平板这类资源量比较紧

缺的设备上使用Spring时,才考虑使用BeanFactory容器。

下面看一个例子程序:

1.创建包com.tutorialspoint.ioc_container,并在包中创建HelloWorld.java类,类的内容如下:

package com.tutorialspoint.ioc_container;

public class HelloWorld {
    
    private String message;

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

    public void getMessage() {
        System.out.println("Your Message : " + message);
    }
}

 

2.在包com.tutorialspoint.ioc_container中创建MainApp.java类,类的内容如下:

package com.tutorialspoint.ioc_container;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;

@SuppressWarnings("all")
public class MainApp {

    public static void main(String[] args) {
        BeanFactory factory = new XmlBeanFactory(new ClassPathResource("ioc_container.xml"));
        HelloWorld obj = (HelloWorld)factory.getBean("helloWorld");
        obj.getMessage();
    }
}

 

3.在src目录下创建bean的配置元数据(xml配置文件), ioc_container.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-3.0.xsd">

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

</beans>

4.运行程序,得到预期结果

技术分享

 

ApplicationContext容器

ApplicationContext容器是Spring中更为先进的容器。ApplicationContext容器具有BeanFactory容器的所有功能。

一般情况下推荐使用ApplicationContext容器。除非在一些手机或平板上才推荐使用BeanFactory(主要考虑到这类

设备资源比较紧缺)

 

在Spring中有很多类实现了ApplicatonContext接口,主要使用的有如下几个:

  • FileSystemXmlApplicationContext
    从本地文件系统中加载bean的配置文件,需要指定配置文件所在的本地文件系统全路径
  • ClassPathXmlApplicationContext
    从类路径加载bean的配置文件,只需指定xml文件相对Classpath的相对路径即可
  • WebXmlApplicationContext
    在web应用中使用的spring容器,从web.xml得到bean的配置文件的位置,进而加载bean的配置文件

前面我们已经看到过ClassPathXmlApplicationContext的用法,后续我们会专门讲解WebXmlApplicationContext

所以这里我们以FileSystemXmlApplicationContext为例来讲解ApplicationContext容器的使用,如下:

 

1.创建包com.tutorialspoint.ioc_container.app_context,并在包中创建HelloWorld.java,内容如下:

package com.tutorialspoint.ioc_container.app_context;

public class HelloWorld {
    
   private String message;

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

   public void getMessage(){
      System.out.println("Your Message : " + message);
   }
}

 

2.在包com.tutorialspoint.ioc_container.app_context中创建MainApp.java,内容如下:

package com.tutorialspoint.ioc_container.app_context;

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

public class MainApp {

    public static void main(String[] args) {
        //这里指定bean的配置文件位于E盘下的Beans.xml文件
        ApplicationContext context = new FileSystemXmlApplicationContext("E:/Beans.xml");
        HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
        obj.getMessage();
    }
}

 

3.在E盘根目录下创建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-3.0.xsd">

   <bean id="helloWorld" class="com.tutorialspoint.ioc_container.app_context.HelloWorld">
       <property name="message" value="Hello World!"/>
   </bean>

</beans>

 4.运行程序,得出预期结果,如下

技术分享

 

[译]6-Spring IOC容器

标签:

原文地址:http://www.cnblogs.com/sysman/p/4477522.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!