Spring-ApplicationContext容器
2024-10-15 22:57:03
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>
最新文章
- Python(六)面向对象、异常处理、反射、单例模式
- Geolocation API JavaScript访问用户的当前位置信息
- 【Java学习笔记】集合转数组---toArray()
- Unable to establish connection to tokens
- Dynamic CRM 2013学习笔记(四十三)流程6 - 自定义流程活动
- SiteView
- Atom 下载、安装
- android面试
- 存储过程实例总结(开发中的错误与总结,调试,数据库函数DATEDIFF计算当前日期是否在本周内)
- 简单ESB的服务架构
- MongoDB的C#驱动
- 【Python】0/1背包、动态规划
- 第六十七节,html表单元素
- CSS input type=";number";出现上下箭头时解决方案
- github pages + Hexo + node.js 搭建属于自己的个人博客网站
- Oracle绝对秒数转换为时间戳
- Gerapy 安装
- JQ02
- SNF快速开发平台--多组织+多平台+多系统处理方案
- bzoj 1197 DP
热门文章
- JQuery.getJSON 没反应
- [转]Vim插件管理工具Vundle
- 关于Linux网卡调优之:RPS (Receive Packet Steering)
- phpadmin 装了6666端口只能在IE打开,在阿里云改了 开放端口85好了
- Linux用ssh登陆出现“Too many authentication failures for root”
- elasticsearch中mapping的_source和store的笔记
- Ubuntu 16.04 LTS nodejs+pm2+nginx+git 基础安装及配置环境(未完,未整理)
- yii 常用orm
- GSAP 官方文档(结贴)
- studio导入Eclipse 项目要改的文件