`
sammor
  • 浏览: 413258 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

spring自定义标签之二 —— 规范定义XSD

阅读更多

引言:

       spring的配置文件中,一切的标签都是spring定义好的。<bean/>等等,有了定义的规范,才能让用户填写的正常可用。想写自定义标签,但首先需要了解XML Schema Definition(XSD) 的。

 

标签定义:

       对于该类标签的定义,spring中有着相应的XSD定义文档

       http://www.springframework.org/schema/beans

 

       对于XSD,简单的说是xml的一个标签的定义,在这里就不对XSD过多的解释了,祥见

       http://www.w3school.com.cn/schema/schema_example.asp

       这里就简单就应用中会经常碰到的一些定义进行说明一下。

 

应用场景:

      对数据库连接进行进一步的封装,使配置简单化。

      由原来的配置方式:

<bean id="dataSource"
	class="org.springframework.jdbc.datasource.DriverManagerDataSource">
	<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
	<property name="url"
		value="jdbc:mysql://localhsost/freebug?useUnicode=true&amp;characterEncoding=utf8&amp;autoReconnect=true"></property>
	<property name="username">
		<value>root</value>
	</property>
	<property name="password">
		<value>root</value>
	</property>
</bean>

<!-- 会话 -->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
	<property name="configLocation" value="classpath:SqlMapCommonConfig.xml" />
	<property name="dataSource" ref="dataSource" />
</bean> 

    改为:

<mysql:client id="sqlMapClient" datasouceip="localhsost"  characterEncoding="utf8" 
            dbname="freebug"   username="root" password="root"
            configLocation="classpath:SqlMapCommonConfig.xml" />

   从这里面,对配置进行了一次简化的处理。其他很多的信息属性还可以进行默认和正则式的限制。

 

   如何做到使上面的配置可以成立,这就要求着,对这个标签进行xsd规范的定义。

 

标签定义

   定义如下:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns="http://sammor.javaeye.com/schema/tags"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:beans="http://www.springframework.org/schema/beans"
	targetNamespace="http://sammor.javaeye.com/schema/tags"
	elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xsd:import namespace="http://www.springframework.org/schema/beans" />
	<xsd:element name="client">
		<xsd:annotation>
			<xsd:documentation>connect to mysql</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<!-- 继承定义 从namespace="http://www.springframework.org/schema/beans" -->
				<xsd:extension base="beans:identifiedType">
					<xsd:attribute name="dbname" type="xsd:string" use="required" />
					<xsd:attribute name="datasouceip" type="xsd:string"
						use="optional" default="127.0.0.1" />
					<xsd:attribute name="username" type="xsd:string" use="required" />
					<xsd:attribute name="password" type="xsd:string" use="required" />
					<xsd:attribute name="characterEncoding" type="xsd:string"
						default="utf8">
						<xsd:simpleType>
							<xsd:restriction base="xsd:string">
								<xsd:enumeration value="utf8" />
								<xsd:enumeration value="gbk" />
							</xsd:restriction>
						</xsd:simpleType>
					</xsd:attribute>
					<xsd:attribute name="configLocation" type="xsd:string"
						default="classpath:SqlMapCommonConfig.xml" />
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
</xsd:schema>
 

说明:

xsd:element     表示定义标签
xsd:extension  如java中的继承,把现有的定义继承进来
xsd:attribute    标签带有的属性
xsd:restriction  对标签改属性进一步的限制,进行一些值的约束

p.s:有时,可能会在

<xsd:extension base="beans:identifiedType">

    处报出错误

src-resolve: Cannot resolve the name 'beans:identifiedType' to a(n) 'type definition' component.

    请跳过,这个不影响使用,只是ide的检查有问题。

 

声明标签

     对于写好的标签定义需要把他公布到应用中,使其他spring的xml中,可用,需要几步:

1、在classpath资源路径下加入文件:

     

 2、spring.schemas该文件中填写:

http\://sammor.javaeye.com/schema/tags/springtags.xsd=conf/springtag.xsd

     其中http后的“\”为转义的意思

 

 3、在spring的配置文件xml头部加入

 在配置文件中声明引用xsd定义

 

当然,到这一步的时候,还仅是对定义一种自定义标签的写法,接下来,如何去做到标签的实现处理,还要做进一步的处理。spring自定义标签之三 —— 自我实现

 

p.s 关于xsd的规范学习,还有很多很多,它是一个强大的规范,可以为我们做很多的基础信息和约束,为使用者提供更安全方便的做法。

 

 

其他相关文章:

spring自定义标签之一 —— 意义思考

spring自定义标签之三 —— 自我实现

 

  • 大小: 15.8 KB
  • 大小: 89.3 KB
分享到:
评论
4 楼 rmzdb 2013-10-21  
我想我已经知道了  谢谢
3 楼 rmzdb 2013-10-21  
请问你这里的标签 mysql:client 这里的‘mysql’是怎么配置的? 在xml配置文件中我是不是可以写成  sql:client 或者oracle:client。。。这里没看懂,请赐教
2 楼 wuchsh2013 2013-09-26  
非常好。值得学习。
1 楼 mozhenghua 2011-06-29  
很详细呀,我先学习一下

相关推荐

    spring-aop-3.0.xsd spring-beans-3.0 spring-context-3.0.xsd spring-mvc-3.1.xsd

    Spring 框架是 Java 开发中的核心框架之一,它为构建可维护、模块化的应用程序提供了强大的支持。在提供的信息中,我们关注的是 Spring 的一些关键组件和它们对应的 XML 配置文件,这些文件通常用于定义和管理 ...

    让CAS支持客户端自定义登陆页面——服务器篇.docx

    ### 让CAS支持客户端自定义登录页面——服务器篇 #### 概述 本文档主要介绍如何在CAS(Central Authentication Service)系统中实现客户端自定义登录页面的功能,并且着重讲解服务器端的修改步骤与注意事项。CAS...

    dubbo.xsd文件

    4. 对于自定义扩展,确保在`dubbo.xsd`中添加了相应的元素定义,并重新打包发布。 总之,`dubbo.xsd`是Dubbo框架的核心组成部分,它规范了XML配置文件的结构,确保了配置的正确性和有效性。理解和掌握`dubbo.xsd`...

    SPRING MVC3.2案例讲解---配置

    **Spring MVC 3.2 案例讲解——配置** Spring MVC 是 Spring 框架的一个模块,专门用于处理Web应用程序的请求-响应模式。在3.2版本中,Spring MVC引入了一些重要的改进和增强,使得开发更加高效和灵活。本篇文章将...

    让CAS支持客户端自定义登陆页面----服务器篇--.doc

    ### 让CAS支持客户端自定义登录页面——服务器端配置详解 #### 一、背景与目的 随着企业级应用系统的不断扩展和发展,身份认证系统(如CAS)的安全性和灵活性变得尤为重要。CAS(Central Authentication Service)...

    JAVA初级教程——Web系统开发技术与方法

    - **XML解析**涉及到DOM、SAX解析器,理解XML文档生命周期,以及DTD(文档类型定义)和XSD(XML Schema定义)的作用。 通过这个初级教程,你将具备开发基于Java的Web应用程序的基础能力,能够构建动态网站,与...

    SpringMVC.pptx

    它继承了Spring框架的一贯特性——轻量级、松散耦合以及易于扩展的特点,同时也为Web开发提供了一个清晰的模型-视图-控制器(MVC)架构实现。相较于传统的Java Web开发方式如Servlet,SpringMVC提供了更为简洁、灵活...

    logback练习代码,从0开始到整合SpringBoot

    - **自定义配置**:开发者可以通过在 `src/main/resources` 目录下创建 `logback-spring.xml` 文件来自定义日志配置,Spring Boot 将优先使用该文件。 - **日志级别**:通过 `logging.level.&lt;package-name&gt;=...

    springboot构建自己的starter.docx

    通过以上步骤,我们成功地创建了一个简单的 Spring Boot Starter,并实现了自动配置和自定义配置属性的支持。这种模式不仅能够提高开发效率,还能使得代码更加简洁易维护。在未来开发过程中,可以根据具体业务需求...

    XML学习指南(由浅入深)

    XML是一种自定义标记语言,它的结构清晰、易于解析,通过定义自己的标签来描述数据。XML文档由元素、属性、实体、注释等构成,遵循严格的语法规则。 **2. XML文档结构** - 文档声明:`...

Global site tag (gtag.js) - Google Analytics