`

自定义xsd扩展

    博客分类:
  • java
阅读更多

扩展xsd很简单,官方文档送上:https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/xml-custom.html

照着做没有多大问题,自己也记录一下

第一步:定义bean的结构,自定义xsd就是通过xml生成一个bean而已,这个bean是你提前描述好的,需要怎样生成的,所以当然要提前定义好

 

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

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

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

 第二步,解析这个xml的beanhandler,既然定义了bean的结构,当然需要知道具体是哪个类来如何生成bean,这个就是需要一个hander 来处理一下,spring提供了解析xml的工具类,所以,你只需要告诉spring,如何把这个xml变成bean就好,具体解析这个恶心的事情,交给spring就好

 

 

public class MyNamespaceHandler extends NamespaceHandlerSupport {
    @Override
    public void init() {
        registerBeanDefinitionParser("gycdate", new SimpleMyBeanDefinitionParser());
    }
}


public class SimpleMyBeanDefinitionParser  extends AbstractSingleBeanDefinitionParser {


    @Override
    protected Class getBeanClass(Element element) {
        return Mybean.class;
    }

    @Override
    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);
        SimpleDateFormat dateFormat=new SimpleDateFormat();
        // this however is an optional property
        String lenient = element.getAttribute("isgyc");
        if (StringUtils.hasText(lenient)) {
            bean.addPropertyValue("isgyc", Boolean.valueOf(lenient));
        }
    }
}

 第三步,将xml命令空间和xsd文件,hander三者关联起来,如何关联,resource下面的spring.handers和spring.schemas就好

spring.handers
http\://www.mycompany.com/schema/mynsgyc=com.xxx.xxx.MyNamespaceHandler

spring.schemas
http\://www.mycompany.com/schema/mynsgyc/spring-mynsgyc.xsd=com/xxx/xxx/TestXsd.xml

最后可以通过注解获取到这个bean

  @Autowired
    private Mybean mybean;

 

然后就done了

 

 

1
0
分享到:
评论

相关推荐

    spring 自定义xsd

    在Spring中自定义XSD,开发者可以创建自己的扩展,以便在XML配置文件中定义特定的bean或行为。这个过程对于那些希望对Spring配置进行模块化或者定制化的项目尤其有用。下面将详细解释如何进行Spring自定义XSD。 ...

    自定义eclipce扩展点代码实例

    本文将深入探讨“自定义Eclipse扩展点代码实例”这一主题,通过项目实例来阐述如何创建和使用扩展点,以提高开发效率。 Eclipse插件体系的核心在于OSGi框架,它允许开发者通过定义、实现和组合扩展点来增强Eclipse...

    xsd文件 xsd1.4,xsd2.0,xsd3.0

    2. **数据类型**:包括基本数据类型(如字符串、整数、浮点数)和自定义数据类型。 3. **命名空间支持**:使不同来源的XML元素和属性能够共存,避免命名冲突。 4. **约束和验证**:通过模式定义,可以对XML文档进行...

    xsd生成xml工具

    这个工具的亮点在于它提供了完整的源代码,这意味着用户不仅可以使用工具,还可以深入理解其工作原理,甚至进行自定义扩展。 XML文档通常由一系列元素组成,这些元素按照预定义的规则组织。XSD文件则为这些元素提供...

    IEC61131-10 XSD

    `Extension_FormattedMarkupText.xsd`、`VendorExtensionExample.xsd`等扩展XSD文件则允许供应商添加自定义的扩展特性,以满足特定应用或硬件平台的需求。这些扩展可能涉及新的数据类型、步骤类型或者用户界面元素,...

    dubbo xsd

    7. **其他扩展配置**:Dubbo.xsd还支持服务级别的配置,如服务质量控制、负载均衡策略、服务路由规则等,这些都可以通过自定义标签和属性进行配置。 通过合理的Dubbo XSD配置,开发者可以构建出灵活、高可用的...

    dubbo.xsd文件

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

    dubbo.xsd资源

    9. **扩展性**:Dubbo.xsd允许开发者自定义扩展点,比如自定义协议、序列化方式、过滤器等,增强了框架的灵活性和可扩展性。 10. **部署与应用**:在实际项目中,开发者通常会创建一个基于dubbo.xsd的XML配置文件,...

    XML生成XSD的方法

    2. **定制XSD文件**:如果您希望自定义生成的XSD文件名或者输出路径,可以通过添加额外参数来实现: ```plaintext xsd.exe test.xml /schema:customSchema.xsd ``` 上述命令将生成一个名为`customSchema.xsd`的...

    spring-cache.xsd+spring-encache.xsd

    描述中提到的"springmodules-ehcache.xsd"和"springmodules-cache.xsd"可能来自于Spring Modules项目,这是一个早期的扩展Spring功能的库,其中包含了对Ehcache的支持。这两个文件定义了XML元素和属性,使得开发者...

    XSD(Schema)教程

    - **自定义数据类型**:用户也可以基于内置数据类型创建自己的复杂数据类型,满足特定需求。 3. **结构约束** - **元素的限制**:可以定义元素的出现次数(minOccurs和maxOccurs),以及是否可选。 - **顺序与...

    Xsd.rar_XSD

    3. 数据类型:XSD支持多种内置数据类型,如字符串、整数、浮点数等,也可以自定义数据类型。 4. 命名空间:为了防止元素和属性名称冲突,可以使用命名空间。这通常通过`xmlns`属性来实现。 5. 限制和约束:可以设置...

    ATML标准中使用的XSD

    6. **扩展与继承**:ATML的XSD设计可能利用XML的继承机制,允许在基本类型或元素基础上定义新的类型或元素,以实现模块化和复用性。 7. **IEEE6414标准关联**:虽然具体关联内容未在描述中明确,但ATML可能与IEEE...

    淘淘商城的dubbo.xsd文件

    10. **自定义扩展**:淘淘商城可能根据自身业务特性,在dubbo.xsd中定义了特有的扩展点,以满足特定的业务需求。 了解并解析这个dubbo.xsd文件,有助于我们深入理解淘淘商城的架构设计,优化服务调用效率,以及更好...

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

    这个文件对于实现高度自定义的 Spring 应用程序非常重要。 4. **spring-mvc-3.1.xsd**: Spring MVC 是 Spring 框架的一部分,专门用于构建 Web 应用的模型-视图-控制器架构。`spring-mvc-3.1.xsd` 文件定义了与 ...

    spring-context-4.2.xsd.zip

    理解并熟练运用`spring-context-4.2.xsd`,能够帮助开发者更高效地配置和管理Spring应用,提升项目的可维护性和可扩展性。在开发环境中,当无法连接网络或者远程获取速度慢时,本地保存此XSD文件可以提高开发效率,...

    emf-xsd-SDK-2.6.1

    GEF是一个可扩展的框架,用于开发各种图形编辑器,它允许开发者创建自定义的绘图工具,以图形化方式表示和编辑EMF模型。 Visual Editor是基于EMF和GEF构建的,专门用于创建可视化的模型编辑器。它提供了一系列预...

    自定义 Schema 解析 Spring Bean

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

    dubbo.xsd压缩包文件下载,解压导入即可使用

    4. 对于复杂的配置,可以利用`dubbo:xsd`提供的扩展性,自定义标签和属性,满足特定场景的需求。 总的来说,`dubbo.xsd`文件是Dubbo服务治理的重要组成部分,它规范了服务的XML配置格式,使得服务的声明和管理更加...

Global site tag (gtag.js) - Google Analytics