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>

最新文章

  1. Python(六)面向对象、异常处理、反射、单例模式
  2. Geolocation API JavaScript访问用户的当前位置信息
  3. 【Java学习笔记】集合转数组---toArray()
  4. Unable to establish connection to tokens
  5. Dynamic CRM 2013学习笔记(四十三)流程6 - 自定义流程活动
  6. SiteView
  7. Atom 下载、安装
  8. android面试
  9. 存储过程实例总结(开发中的错误与总结,调试,数据库函数DATEDIFF计算当前日期是否在本周内)
  10. 简单ESB的服务架构
  11. MongoDB的C#驱动
  12. 【Python】0/1背包、动态规划
  13. 第六十七节,html表单元素
  14. CSS input type=&quot;number&quot;出现上下箭头时解决方案
  15. github pages + Hexo + node.js 搭建属于自己的个人博客网站
  16. Oracle绝对秒数转换为时间戳
  17. Gerapy 安装
  18. JQ02
  19. SNF快速开发平台--多组织+多平台+多系统处理方案
  20. bzoj 1197 DP

热门文章

  1. JQuery.getJSON 没反应
  2. [转]Vim插件管理工具Vundle
  3. 关于Linux网卡调优之:RPS (Receive Packet Steering)
  4. phpadmin 装了6666端口只能在IE打开,在阿里云改了 开放端口85好了
  5. Linux用ssh登陆出现“Too many authentication failures for root”
  6. elasticsearch中mapping的_source和store的笔记
  7. Ubuntu 16.04 LTS nodejs+pm2+nginx+git 基础安装及配置环境(未完,未整理)
  8. yii 常用orm
  9. GSAP 官方文档(结贴)
  10. studio导入Eclipse 项目要改的文件