Spring-ApplicationContext容器

Spring IoC 容器详解
本文详细介绍了Spring框架中的ApplicationContext容器,包括其不同实现方式及其应用场景。此外,还深入探讨了Spring Bean的定义及配置元数据,展示了如何通过XML配置文件定义Bean的创建、生命周期及依赖关系。
Spring ApplicationContext容器

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

最常用的Application接口实现:

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

例子跟HelloWorld一样,HelloWorld例子中使用的就是ApplicationContext的ClassPathXmlApplicationContext,

Spring Bean定义

被称为bean的对象是构成应用程序的支柱也是由SpringIoC容器管理的。bean是一个被实例化,组装,并通过Spring IoC容器所管理的对象。这些bean是由容器提供的配置元数据创建的,例如先前在XML的表单中定义。

bean定义包含称为配置元数据的信息,下述容器也需要知道配置元数据:

  • 如何创建一个bean
  • bean的生命周期的详细信息
  • bean的依赖关系
属性描述
class这个属性时强制性的,并且制定用来创建bean的bean类
name这个属性制定唯一的bean标识符。在基于XML的配置元数据中,你可以使用ID或name来制定bean标识符
scope这个属性制定由特定bean定义创建的对象的作用域。
constructor-arg它用来注入依赖关系
properties用来注入依赖关系
autowiring mode用来注入依赖关系
lazy-initialization mode延迟初始化bean告诉IoC容器在它第一被请求时,而不是在启动时去创建一个bean实例
initialization在bean的所有必需的属性被容器设置之后,调用回调方法。
destruction当包含该bean的容器被销毁时,调用回调方法。
Spring配置元数据

Spring IoC容器完全由实际编写的配置元数据的格式解耦。有下面三个重要的方法把配置元数据提供给Spring容器:

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

上文已经看到如何把基于XML的配置元数据提供给容器,但看下面膜的基于XML配置文件的例子,这个配置文件中有不同的bean定义,包括延迟初始化,初始化方法和销毁方法:

<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">

   <!-- A simple bean definition -->
   <bean id="..." class="...">
       <!-- collaborators and configuration for this bean go here -->
   </bean>

   <!-- A bean definition with lazy init set on -->
   <bean id="..." class="..." lazy-init="true">
       <!-- collaborators and configuration for this bean go here -->
   </bean>

   <!-- A bean definition with initialization method -->
   <bean id="..." class="..." init-method="...">
       <!-- collaborators and configuration for this bean go here -->
   </bean>

   <!-- A bean definition with destruction method -->
   <bean id="..." class="..." destroy-method="...">
       <!-- collaborators and configuration for this bean go here -->
   </bean>

   <!-- more bean definitions go here -->

</beans>

 

转载于:https://www.cnblogs.com/fangpengchengbupter/p/7778152.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值