Spring学习日记【3】——配置文件Xml的命名空间

空间(Space)概念:元素、集合、空间和数学对象 在数学中,一个空间(Space)是一种特殊类型的数学对象。它通常是一个集合,但不仅仅是一个普通的集合,而是具有某种附加的结构和定义在其上的运算规则。这些额外的结构使得空间能够反映现实世界中的几何、代数、拓扑、分析等各种抽象或具象的概念。空间的概念体现了数学中结构化思想的核心——通过给定集合添加合适的结构和规则来揭示更深层次的规律和联系。 阅读详情

Spring Bean配置文件——Xml的命名空间

下面是一份非常常见的xml文件。

<?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:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
    
    
    <!--中间是配置文件部分-->
    
    <bean id="txManager"    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

    
    <tx:advice id="txAdvice" transaction-manager="txManager">
        <tx:attributes>
            <tx:method name="find*" propagation="NOT_SUPPORTED" />
        </tx:attributes>
    </tx:advice>

    <aop:config>
        <aop:aspect id="***" ref="***"/>
        <aop:pointcut id="***" expression="****" />
    </aop:config>
    
    <!--中间是配置文件部分-->
    
    </beans>

XML命名空间的声明与使用

命名空间被声明为元素的属性。并不一定只在根元素声明命名空间;而是可以在 XML 文档中的任何元素中进行声明。声明的命名空间的范围起始于声明该命名空间的元素,并应用于该元素的所有内容,直到被具有相同前缀名称的其他命名空间声明覆盖,其中,元素内容是指该元素的 和 之间的内容。
例如:上面的命名空间是在 元素中声明的,所有其中声明的命名空间在这两个标签中有效。

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:类似于一个保留字,它只用于声明命名空间。换言之,xmlns 用于绑定命名空间,但其本身并不绑定到任何命名空间。aop:这里实际上是将前缀“aop”与命名空间" http://www.springframework.org/schema/aop "(这个URI包含关于命名空间的信息)绑定在一起。通常我们会用一个比较简短或约定俗成的名字来作为命名空间的前缀(例如这里的aop),但具体使用什么前缀完全取决于个人.自定义命名空间的前缀是合法的。使用有意义的命名空间前缀增强了XML档的清晰性。所以可以看到我们平时在配置Spring配置文件的时候,前缀名都是aop(切面)、tx(事务)等命名方式。
我们在配置面向切面编程的内容时,使用aop前缀,代表后面的元素(config,aspect等)都是在http://www.springframework.org/schema/aop 中定义的。请注意,前缀只用作占位符,并且必须通过可以识别命名空间的 XML 分析器进行解释才能使用绑定到该前缀的实际命名空间。

Spring配置文件配置命名空间

spring 整合了各种工具,并且spring提供了对各种工具的xml scheme的配置方式,简化了开发。对于各种工具的xml命名空间的引入,我们也应该有一个比较清楚的认识。Spring在启动时是要检验XML文件的。如果xml空间存在命名空间内没有的元素是要报错的。通常情况下,命名空间对应的URI是一个存放XSD的地址,尽管规范没有这么要求。如果没有提供schemaLocation,那么Spring的XML解析器会从命名空间的URI里加载XSD文件。
schemaLocation提供了一个xml 命名空间到对应的XSD(Xml Schema Definition)文件的一个映射,它的值由一个或多个URI引用对组成,
两个URI之间以空白符分隔(空格和换行均可)。第一个URI是定义的 XML命名空间的值,第二个URI给出Schema文档的实际位置,Schema处理器将从这个位置读取Schema文档,该文档的targetNamespace必须与第一个URI(XML命名空间的值)相匹配。
这里的注意与下面aop的命名空间URI位置对比一下。
在xsi:schemaLocation后面配置的字符串都是成对的,前面的是命名空间的URI,后面是xsd文件的URI;
比如我们给出的例子(注意这里已经用了一个命名前缀:xsi,这个xsi是在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
           http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-3.0.xsd
           http://www.springframework.org/schema/aop  http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
           http://www.springframework.org/schema/tx  http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"

这里命名空间aop的值是“http://www.springframework.org/schema/aop ”,它对应的xsd文件的位置为“http://www.springframework.org/schema/aop/spring-aop-3.0.xsd”

我们打开http://www.springframework.org/schema/aop/spring-aop-3.0.xsd ,可以看到xsd文件中targetNamespace的值和命名空间的值一样。

Spring找到校验XML的xsd文件

Spring默认在启动时是要从配置的命名空间的位置加载XSD文件来验证xml文件的,所以如果有的时候断网了,或者一些开源软件切换域名,那么就很容易碰到应用启动不了。
为了防止这种情况,Spring提供了一种机制,即默认从本地加载XSD文件,当本地没有时才根据实际的URI去联网获得。
我们打开Spring-aop-4.1.6RELEASE.jar ,这个包下有一个META_INF文件夹,其中有两个文件:spring.handlers和spring.schemas。
就很明显,Spring是把XSD文件放到本地了,再在spring.schemas里做了一个映射,优先从本地里加载XSD文件。
并且把spring旧版本的XSD文件也全放了。这样可以防止升级了Spring版本,而配置文件里用的还是旧版本的XSD文件,然后断网了,应用启动不了。
注意我在spring.schemas中标红的最后一行,说明我们在写命名空间值对应的xsd文件位置时,可以不用写版本号,它默认的是本地spring相关版本的对应xsd版本,我这里是4.1。
在xsi:schemaLocation中这样写:http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
对于spring配置文件的头,已经有了一个比较清楚的认识。在以后写配置文件的时候不会再一股脑得全拷贝过来。首先看看需要哪些功能,再导入相应的命名空间。
最好是在写命名空间值对应的xsd文件位置的时候,不加版本号,让spring加载本地版本对应的xsd文件。

1104全部报表版本号-银监会报表 G4B_Ⅲ(a)X1《与非中央交易对手的衍生具交易对手信用风险违约风险计算表(现期风险暴露法)(第一档)》G4B_Ⅲ(b)X1《与非中央交易对手的证券融资交易对手信用风险违约风险计算表(权重法)(第一档)》G4B_Ⅲ(a1)X2《与非中央交易对手的衍生具交易对手信用风险违约风险计算表(标准法)(第二档)》Ⅲ(a)X2《与非中央交易对手的衍生具交易对手信用风险违约风险计算表(现期风险暴露法)(第二档)》Ⅲ(a1)X1《与非中央交易对手的衍生具交易对手信用风险违约风险计算表(标准法)(第一档)》 阅读详情

相关推荐

【TestNG自动化测试框架详解】

TestNG是一款设计测试用例执行流程的测试框架。

weixin_43936332的博客 1539

线性空间,线性子空间,基与维数

简单介绍线性空间,线性子空间及其基,维数的概念,并附上几个例子。

只想躺平不想动 3967

短信验证码接收平台完整搭建教程(超详细版,附完整源码)

在网站注册、用户登录、找回密码等功能中,验证码(特别是短信验证码)已成为验证用户身份的常见方式。本教程将详细介绍如何从零搭建一个短信验证码接收平台,用于保存、展示并管理来自短信网关或中间转发程序提交的验证码数据。✅ 教程适合有基本 Python/HTML 基础的开发者🚫 禁止用于任何违法用途,仅供学习参考✅ 支持通过 POST 接口接收短信验证码✅ 支持通过网页实时查看验证码历史记录✅ 验证码信息保存在 SQLite 数据库✅ 支持时间戳排序、查询最新验证码。

weixin_52548902的博客 4551

命名空间又称名字空间,英文名:Namespace

我们先看一下在维基百科中的解释link: 名字空间(英语:Namespace),也称命名空间、名称空间等,它表示着一个标识符(identifier)的可见范围。一个标识符可在多个名字空间中定义,它在不同名字空间中的含义是互不相干的。这样,在一个新的名字空间中可定义任何标识符,它们不会与任何已有的标识符发生冲突,因为已有的定义都处于其他名字空间中。 其实这个好比Java中的相同名字的类,在不同包中的意思类似。 比较好的介绍文章link 扩展XML Schemalink ...

stepMore的博客 1160

ESP32 驱动 SYN6288 语音合成:Arduino IDE 下实现中文数字混合文本的智能播报

本文详细介绍了如何在Arduino IDE环境下使用ESP32驱动SYN6288语音合成模块,实现中文数字混合文本的智能播报。通过硬件选型、开发环境搭建、编码转换原理、命令帧构造及串口通信实战等步骤,帮助开发者快速掌握语音播报技术。文章还提供了混合文本处理技巧和常见问题排查方法,适合智能硬件开发者参考。

weixin_42553471的博客 448

手把手教你编写PCIe设备驱动:基于Linux内核的实战教程

本文详细介绍了基于Linux内核的PCIe设备驱动开发全流程,包括环境准备、设备探测、中断处理、DMA配置等核心内容。通过实战代码示例和Makefile编写指南,帮助开发者快速掌握PCIe驱动开发技术,实现高性能设备驱动开发与优化。

weixin_30687051的博客 193

Spring配置XML文件命名样板

Spring的配置文件示例,包含了所有命名空间的示例

闲鱼的博客 740

Unity 实现动态网格地图生成与交互组件

本文详细介绍了在Unity中实现动态网格地图生成与交互组件的完整方案。从基础网格单元实现到高级交互功能,涵盖网格生成器核心逻辑、事件驱动架构、性能优化技巧以及六边形网格等特殊实现。特别适合游戏开发者学习如何构建战棋、模拟经营类游戏的可交互地图系统,提升开发效率与用户体验。

weixin_29015483的博客 1068

如何编写一份优雅的Spring配置文件

前言 众所周知,Spring最大的特点就是控制反转,而实现控制反转就是通过那一系列的配置文件。平时笔者在开发过程中也写过不少XML配置文件,但大部分都是基于现有的配置文件稍作修改,很多标签内容只能做到“知其然却不知其所以然”,而有很多标签根本不知其然,所以便抽时间认真学习一下相关内容,希望能够编写一份优雅的Spring配置文件。 声明 随便打开一份Spring工程的配置文件,第一行基本上...

懋懋之为 5885

逆向学习:从已上线微信小游戏反推Cocos工程结构(以切水果跑酷为例)

本文以“切水果跑酷”为例,详细介绍了如何通过逆向分析已上线的微信小游戏,反推其基于Cocos Creator的原始工程结构。文章深入拆解了编译后的目录骨架、资源加载逻辑与依赖关系,并重点解析了微信平台API的调用特征,为开发者提供了一种高效学习游戏架构与设计模式的实用方法。

kk1234的博客 1073

【人工智能】在 cc-switch 中配置 AnyRouter 接入 Claude Code 完整指南

本文介绍了在cc-switch工具中配置AnyRouter中转服务以接入Claude Code的详细步骤。主要内容包括:1) 准备API令牌和端点地址;2) 填写基础信息和模型参数;3) 保存配置并重启终端生效;4) 常见问题排查方法。重点强调了API地址格式、模型ID准确性以及配置写入的必要性,帮助用户顺利完成中转服务配置,实现Claude 4.5版本的正常使用。

奶爸的编程之路,也就一周冷个三天 3103

Spring框架学习日记

Spring框架学习日记前言一、Spring框架的依赖注入实现方式二、Spring Bean的实例化方式1.构造器实例化2.静态工厂方式实例化2.实例工厂方式实例化总结 前言 Spring 是分层的 Java SE/EE full-stack 轻量级开源框架,以 IoC(Inverse of Control,控制反转)和 AOP(Aspect Oriented Programming,面向切面编程)为内核,使用基本的 JavaBean 完成以前只可能由 EJB 完成的工作,取代了 EJB 臃肿和低效的开发

yinyoudamo的博客 401

【华为OD技术面试手撕真题】25、验证IP地址 | 手撕真题+思路参考+代码解析(C & C++ & Java & Python & JS)

验证IP地址 华为od机试真题,华为OD技术二面,华为od机考,华为od手撕真题,华为od技术二面,华为od机试,华为OD机试的高频手撕代码题,华为od八股文

KJ.JK 4043

java日记-Spring篇-xml

IOC 对象由Spring创建、管理、装配! 要实现不同的操作,不需要在程序中改动,只需要修改配置文件(xml)。 IOC创建对象的方式 默认使用无参构造器 有参构造情况下: <!--1.通过参数名设置,最常用!--> <bean id="hello" class="com.dg.pojo.Hello"> <constructor-arg name="str" value="沙发"/> </bean> <!

qinwendeng123的博客 151

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Java学习日记7(Spring注解的学习)

Spring是轻代码而重配置的框架,配置比较繁琐,影响开发效率,注解开发可以简化配置文件,提高开发效率为springboot打下基础

weausS的博客 359

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Java学习日记20(spring的事务控制)

spring的事务控制的学习

weausS的博客 386

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Java学习日记19(Spring的AOP的快速入门)

AOP技术实现的内容:让Spring框架监控切入点方法的执行,一旦监控到切入点方法被运行,就使用代理机制,动态创建目标对象的代理对象,再根据绑定的通知类型,去完成对应的增强方法。

weausS的博客 350

学习日记-spring-day36-6.24

直接在<property>标签内嵌套定义Bean(如金角大王)内部Bean无需ID,作用域限于当前属性。

qq_59714927的博客 873

spring 学习日记 - 基于annotation的spring mvc 1

Spring 2.5已经出来好久了,可是一直都没有关注过。最近才开始看spring2.5的reference,发现该版本提供了基于annotation的spring mvc开发功能。 一直都认为spring没有提供对Java5特性的特别支持是一个遗憾,2.5版本的这些改进,算是对这个遗憾的弥补吧。不过我估计短时间内2.5版本提供的这些特性是不可能用到我们的正式项目中去的了。毕竟2.0风格的开...

193

java 新项目计划_Spring日记_02之搭建一个新项目

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/...

weixin_42498981的博客 95

SSM学习日记--尚硅谷视频(2)

学习日记的Spring篇

让我康康的博客 1518

Spring学习日志(一)

Spring学习日志(一)Spring作为一个开源框架,它的最大特点就是实现业务分层。它的核心是:IOC和AOP,也就是控制反转和面向切面的编程。当然这个框架也集成了其他的功能,例如测试,可以有效地集成其他框架等等。Spring的使用有两种方法,一种是标签定义法,一种就是通过xml实现。在这里就讲XML语言实现。这就涉及到Spring的xml格式,里面主要包含两大类,命名空间(放在“beans”标签

ZERO の BLOG 287

spring日记(三):在Ioc中装配Bean

JavaBean允许大写字母起头的属性变量名,不过必须满足:变量的前两个字母要么全部大写,要么全部小写。比如IDCode,idCode是合法的,尽量用小写的。 》通过构造函数注入: &lt;!--构造函数注入:type --&gt; &lt;bean id="car1" class="com.baobaotao.ditype.Car"&gt; &lt;constructor-...

yidao620的博客 136

SpringInAction第3版学习日记(1)-装配Bean

SpringInAction第3版学习日记(1)-装配Bean

仗剑走天涯 166

狂人日记day12 && day13

狂人日记day12 && day13 spring spring 是一个开源的免费框架 spring是一个轻量级的非入侵的框架 控制反转 面向切面编程 支持事务的处理,对框架整合的支持 springmvc org.springframework spring-webmvc 5.3.7 org.springframework spring-jdbc 5.3.7 组成 spring官网:https://docs.spring.io/spring

weixin_46505276的博客 219

【Java 开发日记】我们来说一下 Mybatis 的缓存机制

我是小假 期待与你的下一次相遇 ~

纵有疾风起 人生不言弃 3986
上一篇: Spring学习日记【2】——Spring Bean注入方式的汇总及使用配置类进行bean的配置
下一篇: Spring学习日记【4】——事务、隔离性和@Transactional
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值