Spring中配置文件命名空间

概述

​ 在做需求中发现自己对spring配置文件不熟悉,导致在引用一些标签进行配置时出现问题。所以,这里对spring配置文件的命名空间进行学习,以便增加对spring的认识深度。

Spring配置文件

​ Spring配置文件用于指导spring进行bean的生成,装配等工作。applicationContext.xml是Spring的默认配置文件,当容器启动时找不到指定的配置文档时,将会尝试加载这个默认的配置文件。既然使用了xml配置文件,那么就有了命名空间的概念。在xml中,命名空间提供了解决定义的相同元素冲突的一种有效方法。在spring配置文件中通过关键字xmlns引入命名空间,然后通过xsi:schemaLocation指定用于解析和校验xml的定义文件(xsd)的位置。

(1)命名空间声明

​ 命名空间声明的一般形式为:xmlns:命名空间的前缀=”命名空间标识URI”,例如:xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance"。还可以隐式声明命名空间,即省略掉冒号和命名空间前缀。但是,一个xml文件中只能有一个隐式声明的命名空间,如常在applicationContext.xml中隐式声明的命名空间:xmlns="http://www.springframework.org/schema/beans"。

(2)命名空间对应schema文档声明

​ xsi:schemaLocation 是为每个命名空间指定了对应的Schema文档,其定义的语法为:xsi:schemaLocation =”全称命名空间1 全称命名空间1对应的Schema文件”。例如:xsi:schemaLocation=”http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

spring配置文件命名空间读取顺序

​ spring在读取命名空间对应的schema文档时会先去读取jar中存在的xsd文件;如果没有找到,spring会根据配置文件中url取查找。如果没有配置xsd文件的版本号,默认就是jar中最新版本,或者url对应位置的最新版本。所以,配置命名空间可以不必写明版本号。下面给出一个spring配置文件示例:

1
<?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" xmlns:cache="http://www.springframework.org/schema/cache" xmlns:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:jms="http://www.springframework.org/schema/jms" xmlns:lang="http://www.springframework.org/schema/lang" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:oxm="http://www.springframework.org/schema/oxm" xmlns:p="http://www.springframework.org/schema/p" xmlns:task="http://www.springframework.org/schema/task" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util" 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-4.1.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-4.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.1.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.1.xsd http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-4.1.xsd http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-4.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-4.1.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd"> </beans>
袁琼琼 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
多谢支持,共同成长!
0%