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实现。

 

命名空间的定义分为了两个步骤:
  1. 指定命名空间的名称,需要指定命名空间的缩类名和全名
  2. 指定命名空间的schema文档样式文件的位置,用空格或回车行来进行分割。
指定命名空间schema地址有两个用途:
  1. xml解析器可以获取schema文件,并对文档进行格式合法性验证
  2. 在开发环境下,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

  等等。

 

具体用法可详细查询

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐