【学习】Spring 基于XML的配置及其原理
Spring 的配置文件是XML格式,Spring的IOC容器启动时就需要传入一个配置文件,才能以此为基础创建一个容器,并且实例化、配置配置文件中配置好的Bean。Spring 配置文件用于指导Spring 工厂生产Bean,并进行依赖关系的注入,以及Bean实例的分发。Spring默认使用applicationContext.xml配置文件,可以修改。Spring 启动成功需要有Spring 依
Spring 的配置文件是XML格式,Spring的IOC容器启动时就需要传入一个配置文件,才能以此为基础创建一个容器,并且实例化、配置配置文件中配置好的Bean。
Spring 配置文件用于指导Spring 工厂生产Bean,并进行依赖关系的注入,以及Bean实例的分发。Spring默认使用applicationContext.xml配置文件,可以修改。
Spring 启动成功需要有Spring 依赖包、配置文件以及配置的Bean的类都合法。
Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份Bean的配置注册表;然后根据这张注册表来实例化Bean,装配好Bean之间的依赖关系;为应用上层提供就绪的运行环境。
Spring 容器中对象更加明确的经历了定义、实例化和使用等阶段:
- 对象定义: Spring 容器启动时,会根据开发人员对 Bean(对象)的定义,统一解析这些 Beans 到 Bean Definition容器 (ConcurrentHashMap<String, BeanDefinition>beanDefinitionMap) 中。同时 Spring 也会解析一些容器启动所必须的和一些默认行为的 Beans 到Bean Definition容器中。
- 对象实例化: Spring 容器根据一定的规则,将 beanDefinitionMap 中的每个 Bean Definition实例化为具体的 Java 对象,同时会将 Singleton 类型的对象缓存到 bean 容器 (ConcurrentHashMap<String, Object> singletonObjects) 中。
- 对象使用: 前两步骤为 Spring 容器启动时执行,该步骤为应用程序在执行相关业务逻辑时,会到 Spring 容器中找出(Single 类型)或者实例化(如 Prototype 类型)相关对象,供业务逻辑使用。
对于 Web Project, 开发人员只要在 web.xml 加入下列代码,并将相关 Spring 依赖文件引入就可以在开发中使用 Spring。
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
这是一个典型的 ServletContextListener,Servlet 容器(如 Tomcat 等)在启动时会找到 ContextLoaderListener 并执行其 contextInitialized(ServletContextEvent event) 方法。从这里开始,Spring 将会进行 Bean Definition的解析、Bean Processors 设置和处理、Beans 实例化等工作。从而将程序会用到的 Java 对象定义并根据该定义创建好,提供给开发人员去使用。 这里 Spring 首先需要处理的就是 Bean 的定义。
Bean配置信息称为Bean的元数据信息,包含以下几个方面:
Bean的实现类
Bean的属性信息:比如:数据源的连接数,用户名和密码等等
Bean的依赖关系:Spring根据依赖关系配置完成Bean之间的装配
Bean的行为配置:比如:生命周期范围以及生命周期各个过程的回调函数等
Bean的创建方式定义:主要说明是通过构造器还是工厂方法来构造Bean
Spring 项目可能存在多个配置文件,那么Spring 项目加载多个配置文件的方法是:1. 在配置文件中使用import来导入所需要的配置文件,2. 将多个配置文件构造一个数组,然后传递ApplicationContext实现。
- 指定命名空间的名称,需要指定命名空间的缩类名和全名
- 指定命名空间的schema文档样式文件的位置,用空格或回车行来进行分割。
- xml解析器可以获取schema文件,并对文档进行格式合法性验证
- 在开发环境下,IDE可以用schema文件来对文档编辑器进行诱导功能。
常用schema:
- spring-beans-3.0.xsd:Spring3.0最主要的配置文件,主要是用于配置Bean
- spring-aop-3.0.xsd:aop配置定义的schema
- spring-tx-3.0.xsd:声明式事物配置定义的Schema
- spring-mvc-3.0.xsd:Spring3.0当中新增的
- spring-util-3.0.xsd:是为简化某些复杂的标准配置而提供的Schema
- spring-jee-3.0.xsd:是为简化J2EE中EJB等功能的配置而提供的Schema
- spring-jdbc-3.0.xsd:为Spring内接数据库而提供的Schema,3.0新增
- spring-jms-3.0.xsd:jms配置的Schema
- spring-lang-3.0.xsd:增加了对动态语言的支持,为集成动态语言而定义
- spring-oxm-3.0.xsd:配置对象xml映射到schema,3.0新增
- spring-task-3.0.xsd:任务调度的Schema
- spring-tool-3.0.xsd:为集成Schema一些有用工具而提供的Schema
基于XML的配置就是依据这些schema来做的:
spring-beans 用来定义bean
aop迎来配置aop
等等。
具体用法可详细查询
更多推荐
所有评论(0)