`
yjhexy
  • 浏览: 331572 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

spring schema 扩展

阅读更多

spring 可以基于schema 扩展,自定义 schema。参考文档自己搭了个应用试验了一下:

 


首先看下自己写的 myns.xsd

 

 

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns="http://www.yjhexy.com/schema/myns"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:beans="http://www.springframework.org/schema/beans"
	targetNamespace="http://www.yjhexy.com/schema/myns" elementFormDefault="qualified"
	attributeFormDefault="unqualified">

	<xsd:import namespace="http://www.springframework.org/schema/beans" />

	<xsd:element name="dateformat">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="beans:identifiedType">
					<xsd:attribute name="lenient" type="xsd:boolean" />
					<xsd:attribute name="pattern" type="xsd:string" use="required" />
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>

</xsd:schema>

 

然后看下我的applicationContxt.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:myns="http://www.yjhexy.com/schema/myns"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
	http://www.yjhexy.com/schema/myns http://www.yjhexy.com/schema/myns/myns.xsd
	">

	<myns:dateformat id="dateFormat" pattern="yyyy-MM-dd HH:mm"
		lenient="true" />

</beans>

很明显实现了个自定义的bean ,这个bean有两个属性,一个是时间的格式,另外一个不知道啥东西。

 

然后在META-INF下面写了两个文件,

spring.handlers:用来描述如何处理自定义的namespace

 

http\://www.yjhexy.com/schema/myns=com.yajun.balance.spring.MyNamespaceHandler

 spring.schemas:描述schema的位置

 

http\://www.yjhexy.com/schema/myns/myns.xsd=com/yajun/balance/spring/myns.xsd

 

然后是需要两个类,一个处理namespace,一个处理beanDefinition

 

 

package com.yajun.balance.spring;

import org.springframework.beans.factory.xml.NamespaceHandlerSupport;

public class MyNamespaceHandler extends NamespaceHandlerSupport {

    public void init() {
        registerBeanDefinitionParser("dateformat", new SimpleDateFormatBeanDefinitionParser());
    }

}
 

 

 

package com.yajun.balance.spring;

import java.text.SimpleDateFormat;

import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
import org.springframework.util.StringUtils;
import org.w3c.dom.Element;

public class SimpleDateFormatBeanDefinitionParser extends AbstractSingleBeanDefinitionParser {

    protected Class getBeanClass(Element element) {
        return SimpleDateFormat.class;
    }

    protected void doParse(Element element, BeanDefinitionBuilder bean) {
        // this will never be null since the schema explicitly requires that a value be supplied
        String pattern = element.getAttribute("pattern");
        bean.addConstructorArgValue(pattern);

        // this however is an optional property
        String lenient = element.getAttribute("lenient");
        if (StringUtils.hasText(lenient)) {
            bean.addPropertyValue("lenient", Boolean.valueOf(lenient));
        }
    }
}

 

最后main输出试试:

 

package com.yajun.balance.spring;

import java.text.SimpleDateFormat;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainTest {

    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        SimpleDateFormat f = (SimpleDateFormat) ctx.getBean("dateFormat");
        System.out.println(f);
    }
}

 

===========================

 

xsd 基础 常用的简单 类型

 

  • xs:string
  • xs:decimal
  • xs:integer
  • xs:boolean
  • xs:date
  • xs:time
  • xs:positiveInteger
  • 大小: 17 KB
分享到:
评论
4 楼 jd2bs 2013-06-08  
2楼肯定是people.xsd格式错了 
3 楼 haoxx1110 2012-10-24  
帮忙解决一下吧,谢谢了

2 楼 haoxx1110 2012-10-24  
请问我按照你这个做的出现了这个异常应该怎么解决??
org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document 'http://www.haoxx.org/schema/people/people.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.
1 楼 sunny3super 2012-07-16  
好文章,另外 http://www.3822.net/topicshow/5802 这里也提供了一个类似的例子,并且提供源代码下载。

相关推荐

    扩展Spring schema样例代码 maven

    首先,让我们深入理解Spring Schema扩展的概念。Spring Schema是Spring XML配置文件中的一种语法结构,它定义了Bean的声明和它们之间的关系。默认的Spring Schema包含了各种内建的元素和属性,如bean、property、ref...

    spring schema

    在压缩包中的“spring扩展schema.docx”文件,可能是对Spring Schema的详细扩展说明,包括自定义扩展点、自定义标签以及如何在Spring中使用这些扩展来创建自己的解决方案。例如,开发者可能会定义自己的命名空间来...

    spring4.0 schema

    Spring 4.0 Schema是Spring框架的一个重要组成部分,它定义了Spring配置文件的结构和语义,使得开发者可以通过XML配置来声明式地管理应用程序的组件和依赖关系。在这个压缩包中,包含了多个子目录,每个目录对应...

    spring framework schema

    以下是关于“spring framework schema”及其相关标签“springschema”的详细知识点: 1. **Schema**: 在Spring Framework中,schema是一种XML配置方式,用于定义bean的行为和依赖关系。例如,`jdbc`、`jms`、`cache...

    自定义 Schema 解析 Spring Bean

    本篇文章将聚焦于“自定义Schema解析Spring Bean”这一主题,这是一项高级功能,允许开发者扩展Spring的XML配置能力,以满足特定项目的需要。 自定义Schema解析是Spring框架提供的一个强大特性,它允许开发者创建...

    spring-framework-4.2.4.RELEASE-schema

    Spring Framework是Java平台上的一个核心企业级应用框架,以其模块化、可扩展性和强大的功能而闻名。4.2.4.RELEASE版本是该框架的一个重要里程碑,它带来了诸多改进和新特性,提升了开发效率和应用程序的稳定性。在...

    Spring自定义配置Schema可扩展(二)

    在Spring框架中,自定义配置Schema的扩展是提高应用程序灵活性和可配置性的重要方式。它允许开发者定义自己的XML标签和属性,以适应特定项目的需求。本文将深入探讨Spring自定义配置Schema的可扩展性,特别是在第二...

    Spring自定义配置Schema可扩展(一)

    总结一下,本教程的目的是教你如何扩展Spring的XML配置,以支持自定义的Schema和注解。这个过程包括: 1. 创建自定义的Schema(xsd文件)。 2. 实现`NamespaceHandler`以处理自定义的XML元素。 3. 注册`...

    spring4.2.0的schema约束

    - **增强的表达式语言(SpEL)**:Spring Expression Language在4.2.0版本中得到了扩展,可以在更多地方使用,例如bean的初始化方法和属性值。 - **WebFlux支持**:虽然不是schema约束的直接改变,但Spring 4.2.0...

    spring xml扩展

    XML扩展是Spring框架早期的主要配置方式,允许开发者自定义标签来增强其功能。在本篇文章中,我们将深入探讨Spring XML扩展以及自定义标签技术。 首先,了解Spring XML配置的基本结构至关重要。在Spring应用中,...

    spring-framework-4.1.4.release-schema

    《Spring Framework 4.1.4.RELEASE Schema详解》 Spring Framework是Java开发中的一个核心框架,它为创建高效...同时,这些Schema文件也是Spring的扩展性和灵活性的体现,它们使得Spring能够适应不断变化的开发需求。

    spring-framework-4.1.5.RELEASE-schema.zip

    在Spring 4.1.5版本中,该框架引入了一系列的改进和优化,旨在提高开发效率,增强可维护性和扩展性。这个"spring-framework-4.1.5.RELEASE-schema.zip"压缩包包含了Spring框架在不同模块中的XML Schema定义,这些...

    spring-framework-4.1.6.RELEASE-schema.zip

    Spring Framework是Java开发中的核心框架,它为构建高质量、可维护、可扩展的应用程序提供了全面的解决方案。在4.1.6.RELEASE版本中,Spring引入了对XML Schema的增强支持,以帮助开发者更好地理解和配置Spring的...

    Spring中自定义Schema如何解析生效详解

    在Spring框架中,自定义Schema允许开发者扩展XML配置,...这种灵活性使得Spring能够适应各种复杂的场景,即使在Spring Boot这样的零配置框架中,也可以通过ImportSource等方式引入XML配置来实现自定义的Schema扩展。

    最新版spring-framework-5.0.1.RELEASE-schema.zip约束

    这个压缩包“spring-framework-5.0.1.RELEASE-schema.zip”包含了与Spring框架相关的XML约束文件,这些文件定义了配置文件中的元素和属性,确保了正确和一致的配置。 1. **mvc** - 这部分涉及到Spring MVC(Model-...

    spring-扩展点-namespacehandler(Spring自定义标签)

    在Spring框架中,扩展点是允许用户自定义行为的关键组件,而`NamespaceHandler`就是其中的一个重要扩展点,主要用于处理自定义的XML命名空间。当我们需要在Spring配置文件中引入自定义标签时,`NamespaceHandler`起...

    spring-5.3.14-schema.zip

    本篇文章将围绕“spring-5.3.14-schema.zip”压缩包中的各模块进行详细讲解,帮助读者深入了解Spring的核心概念和主要功能。 1. **mvc**(Model-View-Controller) Spring MVC是Spring框架的一个模块,用于构建Web...

    最新版spring-framework-4.3.12.RELEASE-schema.zip约束

    这个"spring-framework-4.3.12.RELEASE-schema.zip"文件包含了Spring框架的核心组件和子模块的XML架构定义,这些定义用于验证和解析配置文件,确保应用程序的正确配置。 1. **mvc**:这部分是Spring的Model-View-...

    征服Spring AOP—— Schema

    本文将深入探讨“Spring AOP——Schema”,这是Spring AOP的一种配置方式,通过XML schema定义切面和通知。 首先,我们需要理解AOP的基本概念。面向切面编程是一种编程范式,旨在提高软件的模块化程度,将关注点...

Global site tag (gtag.js) - Google Analytics