扩展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了
相关推荐
在Spring中自定义XSD,开发者可以创建自己的扩展,以便在XML配置文件中定义特定的bean或行为。这个过程对于那些希望对Spring配置进行模块化或者定制化的项目尤其有用。下面将详细解释如何进行Spring自定义XSD。 ...
本文将深入探讨“自定义Eclipse扩展点代码实例”这一主题,通过项目实例来阐述如何创建和使用扩展点,以提高开发效率。 Eclipse插件体系的核心在于OSGi框架,它允许开发者通过定义、实现和组合扩展点来增强Eclipse...
2. **数据类型**:包括基本数据类型(如字符串、整数、浮点数)和自定义数据类型。 3. **命名空间支持**:使不同来源的XML元素和属性能够共存,避免命名冲突。 4. **约束和验证**:通过模式定义,可以对XML文档进行...
这个工具的亮点在于它提供了完整的源代码,这意味着用户不仅可以使用工具,还可以深入理解其工作原理,甚至进行自定义扩展。 XML文档通常由一系列元素组成,这些元素按照预定义的规则组织。XSD文件则为这些元素提供...
`Extension_FormattedMarkupText.xsd`、`VendorExtensionExample.xsd`等扩展XSD文件则允许供应商添加自定义的扩展特性,以满足特定应用或硬件平台的需求。这些扩展可能涉及新的数据类型、步骤类型或者用户界面元素,...
7. **其他扩展配置**:Dubbo.xsd还支持服务级别的配置,如服务质量控制、负载均衡策略、服务路由规则等,这些都可以通过自定义标签和属性进行配置。 通过合理的Dubbo XSD配置,开发者可以构建出灵活、高可用的...
4. 对于自定义扩展,确保在`dubbo.xsd`中添加了相应的元素定义,并重新打包发布。 总之,`dubbo.xsd`是Dubbo框架的核心组成部分,它规范了XML配置文件的结构,确保了配置的正确性和有效性。理解和掌握`dubbo.xsd`...
9. **扩展性**:Dubbo.xsd允许开发者自定义扩展点,比如自定义协议、序列化方式、过滤器等,增强了框架的灵活性和可扩展性。 10. **部署与应用**:在实际项目中,开发者通常会创建一个基于dubbo.xsd的XML配置文件,...
2. **定制XSD文件**:如果您希望自定义生成的XSD文件名或者输出路径,可以通过添加额外参数来实现: ```plaintext xsd.exe test.xml /schema:customSchema.xsd ``` 上述命令将生成一个名为`customSchema.xsd`的...
描述中提到的"springmodules-ehcache.xsd"和"springmodules-cache.xsd"可能来自于Spring Modules项目,这是一个早期的扩展Spring功能的库,其中包含了对Ehcache的支持。这两个文件定义了XML元素和属性,使得开发者...
- **自定义数据类型**:用户也可以基于内置数据类型创建自己的复杂数据类型,满足特定需求。 3. **结构约束** - **元素的限制**:可以定义元素的出现次数(minOccurs和maxOccurs),以及是否可选。 - **顺序与...
3. 数据类型:XSD支持多种内置数据类型,如字符串、整数、浮点数等,也可以自定义数据类型。 4. 命名空间:为了防止元素和属性名称冲突,可以使用命名空间。这通常通过`xmlns`属性来实现。 5. 限制和约束:可以设置...
6. **扩展与继承**:ATML的XSD设计可能利用XML的继承机制,允许在基本类型或元素基础上定义新的类型或元素,以实现模块化和复用性。 7. **IEEE6414标准关联**:虽然具体关联内容未在描述中明确,但ATML可能与IEEE...
10. **自定义扩展**:淘淘商城可能根据自身业务特性,在dubbo.xsd中定义了特有的扩展点,以满足特定的业务需求。 了解并解析这个dubbo.xsd文件,有助于我们深入理解淘淘商城的架构设计,优化服务调用效率,以及更好...
这个文件对于实现高度自定义的 Spring 应用程序非常重要。 4. **spring-mvc-3.1.xsd**: Spring MVC 是 Spring 框架的一部分,专门用于构建 Web 应用的模型-视图-控制器架构。`spring-mvc-3.1.xsd` 文件定义了与 ...
理解并熟练运用`spring-context-4.2.xsd`,能够帮助开发者更高效地配置和管理Spring应用,提升项目的可维护性和可扩展性。在开发环境中,当无法连接网络或者远程获取速度慢时,本地保存此XSD文件可以提高开发效率,...
GEF是一个可扩展的框架,用于开发各种图形编辑器,它允许开发者创建自定义的绘图工具,以图形化方式表示和编辑EMF模型。 Visual Editor是基于EMF和GEF构建的,专门用于创建可视化的模型编辑器。它提供了一系列预...
本篇文章将聚焦于“自定义Schema解析Spring Bean”这一主题,这是一项高级功能,允许开发者扩展Spring的XML配置能力,以满足特定项目的需要。 自定义Schema解析是Spring框架提供的一个强大特性,它允许开发者创建...
4. 对于复杂的配置,可以利用`dubbo:xsd`提供的扩展性,自定义标签和属性,满足特定场景的需求。 总的来说,`dubbo.xsd`文件是Dubbo服务治理的重要组成部分,它规范了服务的XML配置格式,使得服务的声明和管理更加...