什么是spring IOC容器

在本文中,我们将通过示例讨论什么是Spring IOC容器、它如何工作、如何创建Spring IOC容器、如何从Spring IOC容器获取bean。

我们将学到什么?

  • 什么是spring容器?
  • 什么是配置元数据?
  • 如何创建spring容器?
  • 如何从Spring容器中获取Bean?

什么是spring IOC容器?

IoC容器就是具有依赖注入功能的容器,IoC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。应用程序无需直接在代码中创建相关的对象,应用程序由IoC容器进行组装。

Spring IoC容器如何知道哪些是它管理的对象呢?这就需要配置文件,Spring IoC容器通过读取配置文件中的配置元数据,通过元数据对应用中的各个对象进行实例化及装配。

由IoC容器管理的那些组成应用程序的对象我们就叫它Bean, Bean就是由Spring容器初始化、装配及管理的对象,除此之外,bean与应用程序中的其他对象没有什么区别了。

IOC容器的职责是:

  • 实例化bean
  • 把bean关联在一起
  • 配置bean
  • 管理bean的整个生命周期

org.springframework.beansorg.springframework.context包是Spring框架的IoC容器的基础。Spring框架提供了两种不同类型的容器。

  1. BeanFactory容器
  2. ApplicationContext容器

BeanFactory是Spring IOC容器的根接口。ApplicationContextBeanFactory接口的子接口,提供更多的功能,如 AOP功能,i18n等。

BeanFactory和ApplicationContext之间的一个主要区别是,BeanFactory只在调用getBean()方法时实例化bean,而ApplicationContext在容器启动时实例化单例bean,它不等待getBean()方法被调用。

什么是配置元数据?

Spring IoC容器使用其中一种方式配置元数据。此配置元数据表示应用程序开发人员如何告诉Spring容器实例化,配置和组装应用程序中的对象。

Spring IoC容器提供了三种方式配置元数据

  1. 基于XML的配置
  2. 基于注解的配置
  3. 基于Java的配置

如何创建spring容器?

Spring 提供了ApplicationContext接口的多种实现方式供我们使用。

  1. AnnotationConfigApplicationContext

    如果我们要在Java应用程序中使用Spring,并使用注释进行配置,那么我们可以使用它来初始化容器并获取bean对象。

  2. ClassPathXmlApplicationContext

    如果我们在应用程序中使用XML文件的形式配置spring bean,那么我们可以使用这个类来加载文件并获取bean对象。

  3. FileSystemXmlApplicationContext:类似于*ClassPathXmlApplicationContext,*不同之处在于可以从文件系统中的任何位置加载XML配置文件。

Web应用程序使用AnnotationConfigWebApplicationContextXmlWebApplicationContext创建容器。

创建Spring容器:

1、通过applicationContext.xml文件(基于XML的配置)提供配置元数据。

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

//注意,我们通过applicationContext.xml文件(基于xml的配置)提供配置元数据。

2、通过AppConfig.class文件提供配置元数据。

AnnotationConfigApplicationContext  context = new AnnotationConfigApplicationContext(AppConfig.class);
//注意,我们通过AppConfig.class文件提供配置元数据。

3、实现BeanFactory的最常用的API是XmlBeanFactory。

XmlBeanFactory factory = new XmlBeanFactory (new ClassPathResource("applicationContext.xml")); 

如何从Spring容器中获取Bean?

BeanFactoryApplicationContext 两个接口都提供了*getBean()*方法从spring容器中获取bean。

ApplicationContext getBean()示例:

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); 
HelloWorld obj = (HelloWorld) context.getBean("helloWorld");

BeanFactory getBean()示例:

XmlBeanFactory factory = new XmlBeanFactory (new ClassPathResource("beans.xml")); 
HelloWorld obj = (HelloWorld) factory.getBean("helloWorld"); 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值