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
分享到:
相关推荐
首先,让我们深入理解Spring Schema扩展的概念。Spring Schema是Spring XML配置文件中的一种语法结构,它定义了Bean的声明和它们之间的关系。默认的Spring Schema包含了各种内建的元素和属性,如bean、property、ref...
在压缩包中的“spring扩展schema.docx”文件,可能是对Spring Schema的详细扩展说明,包括自定义扩展点、自定义标签以及如何在Spring中使用这些扩展来创建自己的解决方案。例如,开发者可能会定义自己的命名空间来...
Spring 4.0 Schema是Spring框架的一个重要组成部分,它定义了Spring配置文件的结构和语义,使得开发者可以通过XML配置来声明式地管理应用程序的组件和依赖关系。在这个压缩包中,包含了多个子目录,每个目录对应...
以下是关于“spring framework schema”及其相关标签“springschema”的详细知识点: 1. **Schema**: 在Spring Framework中,schema是一种XML配置方式,用于定义bean的行为和依赖关系。例如,`jdbc`、`jms`、`cache...
本篇文章将聚焦于“自定义Schema解析Spring Bean”这一主题,这是一项高级功能,允许开发者扩展Spring的XML配置能力,以满足特定项目的需要。 自定义Schema解析是Spring框架提供的一个强大特性,它允许开发者创建...
Spring Framework是Java平台上的一个核心企业级应用框架,以其模块化、可扩展性和强大的功能而闻名。4.2.4.RELEASE版本是该框架的一个重要里程碑,它带来了诸多改进和新特性,提升了开发效率和应用程序的稳定性。在...
在Spring框架中,自定义配置Schema的扩展是提高应用程序灵活性和可配置性的重要方式。它允许开发者定义自己的XML标签和属性,以适应特定项目的需求。本文将深入探讨Spring自定义配置Schema的可扩展性,特别是在第二...
总结一下,本教程的目的是教你如何扩展Spring的XML配置,以支持自定义的Schema和注解。这个过程包括: 1. 创建自定义的Schema(xsd文件)。 2. 实现`NamespaceHandler`以处理自定义的XML元素。 3. 注册`...
- **增强的表达式语言(SpEL)**:Spring Expression Language在4.2.0版本中得到了扩展,可以在更多地方使用,例如bean的初始化方法和属性值。 - **WebFlux支持**:虽然不是schema约束的直接改变,但Spring 4.2.0...
XML扩展是Spring框架早期的主要配置方式,允许开发者自定义标签来增强其功能。在本篇文章中,我们将深入探讨Spring XML扩展以及自定义标签技术。 首先,了解Spring XML配置的基本结构至关重要。在Spring应用中,...
《Spring Framework 4.1.4.RELEASE Schema详解》 Spring Framework是Java开发中的一个核心框架,它为创建高效...同时,这些Schema文件也是Spring的扩展性和灵活性的体现,它们使得Spring能够适应不断变化的开发需求。
在Spring 4.1.5版本中,该框架引入了一系列的改进和优化,旨在提高开发效率,增强可维护性和扩展性。这个"spring-framework-4.1.5.RELEASE-schema.zip"压缩包包含了Spring框架在不同模块中的XML Schema定义,这些...
Spring Framework是Java开发中的核心框架,它为构建高质量、可维护、可扩展的应用程序提供了全面的解决方案。在4.1.6.RELEASE版本中,Spring引入了对XML Schema的增强支持,以帮助开发者更好地理解和配置Spring的...
在Spring框架中,自定义Schema允许开发者扩展XML配置,...这种灵活性使得Spring能够适应各种复杂的场景,即使在Spring Boot这样的零配置框架中,也可以通过ImportSource等方式引入XML配置来实现自定义的Schema扩展。
这个压缩包“spring-framework-5.0.1.RELEASE-schema.zip”包含了与Spring框架相关的XML约束文件,这些文件定义了配置文件中的元素和属性,确保了正确和一致的配置。 1. **mvc** - 这部分涉及到Spring MVC(Model-...
在Spring框架中,扩展点是允许用户自定义行为的关键组件,而`NamespaceHandler`就是其中的一个重要扩展点,主要用于处理自定义的XML命名空间。当我们需要在Spring配置文件中引入自定义标签时,`NamespaceHandler`起...
本篇文章将围绕“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框架的核心组件和子模块的XML架构定义,这些定义用于验证和解析配置文件,确保应用程序的正确配置。 1. **mvc**:这部分是Spring的Model-View-...
本文将深入探讨“Spring AOP——Schema”,这是Spring AOP的一种配置方式,通过XML schema定义切面和通知。 首先,我们需要理解AOP的基本概念。面向切面编程是一种编程范式,旨在提高软件的模块化程度,将关注点...