Spring---配置文件概述
概述
Spring 的配置文件是用于指导 Spring 工厂进行Bean的生产、依赖关系注入及 Bean 实例分发的“图纸”,它是一个或多个标准的XML文档,J2EE 程序员必须学会并灵活应用这份“图纸”。
Spring 配置文件的一般结构
<beans><import resource=“resource1.xml” /><bean id=“bean1” class=“***”></bean><alias alias=“bean2” name=“bean1” /></beans>
- <beans>表示bean的开始和结束
- <import resource=“resource1.xml” />导入其它配置文件bean的定义,为了加载多个配置文件,当然也可以把这些文件构造成为一个数字,然后将这个数组传递给ApplicationContext实现加载多个配置文件。
- <bean id=“bean1” class=“***”></bean>定义一个bean
- <alias alias=“bean2” name=“bean1” />定义bean的别名
Spring容器启动基本条件
- Spring 的框架类包
- Bean 的配置信息
- Bean 的实现类
Spring启动时,读取bean的配置信息,bean在Spring容器中生成相应的bean的注册表,然后根据注册表实例化bean,装配好bean之间的依赖关系,为上层应用提供准备就绪的运行环境。
Bean的配置信息(bean的元数据信息)
- Bean 的实现类
- Bean 的属性信息
- Bean 的依赖关系 Spring根据依赖关系配置完成bean之间的装配
- Bean 的行为配置 比如生命周期范围
- Bean 的创建方式 通过构造器还是构造方法创建bean
基于XML的配置
Spring 的配置文件是基于XML格式的,Spring1.0的配置文件采用DTD格式,Spring2.0以后使用Schema的格式,后者让不同类型的配置拥有了自己的命名空间,是配置文件更具有扩展性。
采取基于Schema的配置格式,这种配置格式不可使用”定义使用哪种规范进行解析配置文件” 这段代码:<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd">,否则会出现编译不通过的异常。
示例代码如下
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd "> <!-- 默认命名空间的配置 --> <bean id = "person" class = "com.hudongwu.spring.chapter01.Person"/> <!-- aop命名空间的配置 --> <aop:config> <aop:pointcut id="mycut" expression="execution(* com.hudongwu.spring.*(..))"/> </aop:config> </beans>
上述代码释义
- Schema在文档根节点中通过xmlns对文档当中的命名空间进行声明。
- 在上面的代码当中定义了三个命名空间
- 默认命名空间xmlns="http://www.springframework.org/schema/beans",这个命名空间没有缩略名,用于Spring Bean的定义。
- xsi命名空间xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance",这个命名空间用于为每个文档中命名空间指定相对应的Schema样式文件,是标准组织定义的标准命名空间。
- 名称为aop的自定义命名空间xmlns:aop="http://www.springframework.org/schema/aop",这个命名空间是Spring配置aop的命名空间,是用户自定义的命名空间。
- 命名空间的自定义分为两个步骤
- 指定命名空间的名称,需要指定命名空间的缩略名和全限定名。缩略名一般使用简洁易记的名称,若未指定缩略名,则是默认命名空间;全限定名使用文档发布机构的官方网站和相关网站目录作为全限定名。
- 指定命名空间Schema文档样式文件的位置,用空格或回车进行分割。格式:命名空间全限定名+对应的Schema文件地址。
- 上述代码中设置的xmlns:aop相当于第一步,aop为命名空间的缩略名,而http://www.springframework.org/schema/aop则为命名空间的全限定名;设置的xsi:schemaLocation相当于第二步。
- 指定命名空间Schema文档样式文件的位置有两个用途
- xml解析器可以获取Schema文件,并对文档进行格式合法性验证;
- 在开发环境下,IDE对文档编辑器提供诱导功能
- Spring的配置Schema文件分布在各模块类包中,如果模块拥有对应的Schema文件,则可以在模块类包中找到一个config目录,Schema文件就位于该目录中