`
m635674608
  • 浏览: 5027624 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

spring 自定义schema

 
阅读更多

扩展schema,定义自己的bean属性。。不错!

 

主要:

 

1,定义META-INF下.xsd文件,这里是people.xsd;定义spring.handlers;定义spring.schemas

 

2,定义namaspace解析类,这里是StudentNamespaceHandler

 

3,定义beanDefinition,这里是StudentBeanDefinitionParser

 

4,当然还有相关的javabean定义,这里是Student.java

 

详细代码:

 

people.xsd

 

[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <xsd:schema xmlns="http://www.luyee.com/bat/schema/people"  
  3.     xmlns:xsd="http://www.w3.org/2001/XMLSchema"   
  4.     xmlns:beans="http://www.springframework.org/schema/beans"  
  5.     targetNamespace="http://www.luyee.com/bat/schema/people"  
  6.     elementFormDefault="qualified"   
  7.     attributeFormDefault="unqualified">  
  8.     <xsd:import namespace="http://www.springframework.org/schema/beans" />  
  9.       
  10.     <xsd:element name="student">  
  11.      <xsd:complexType>    
  12.             <xsd:complexContent>    
  13.                 <xsd:extension base="beans:identifiedType">   
  14.                    
  15.                     <xsd:attribute name="name"  
  16.                         type="xsd:string">  
  17.                         <xsd:annotation>  
  18.                             <xsd:documentation>  
  19.                                 姓名   
  20.                             </xsd:documentation>  
  21.                         </xsd:annotation>  
  22.                     </xsd:attribute>   
  23.                        
  24.                     <xsd:attribute name="age"  
  25.                         type="xsd:string">  
  26.                         <xsd:annotation>  
  27.                             <xsd:documentation>  
  28.                                 年龄  
  29.                             </xsd:documentation>  
  30.                         </xsd:annotation>  
  31.                     </xsd:attribute>    
  32.                      
  33.                 </xsd:extension>    
  34.             </xsd:complexContent>    
  35.         </xsd:complexType>    
  36.     </xsd:element>    
  37.    </xsd:schema>  

spring.handlers;

[html] view plain copy
  1. http\://www.luyee.com/bat/schema/people=com.luyee.bat.spring.StudentNamespaceHandler  

spring.schemas

[html] view plain copy
  1. http\://www.luyee.com/bat/schema/people.xsd=META-INF/people.xsd  

 

 

StudentNamespaceHandler和StudentBeanDefinitionParser

[java] view plain copy
  1. package com.luyee.bat.spring;  
  2.   
  3. import java.text.SimpleDateFormat;  
  4.   
  5. import org.springframework.beans.factory.support.BeanDefinitionBuilder;  
  6. import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;  
  7. import org.springframework.beans.factory.xml.NamespaceHandlerSupport;  
  8. import org.springframework.util.StringUtils;  
  9. import org.w3c.dom.Element;  
  10.   
  11. public class StudentNamespaceHandler  extends NamespaceHandlerSupport {  
  12.   
  13.     public void init() {  
  14.         registerBeanDefinitionParser("student"new StudentBeanDefinitionParser());    
  15.     }  
  16.       
  17.     class StudentBeanDefinitionParser extends AbstractSingleBeanDefinitionParser{  
  18.          protected Class getBeanClass(Element element) {    
  19.                 return Student.class;    
  20.             }    
  21.             
  22.             protected void doParse(Element element, BeanDefinitionBuilder bean) {    
  23.                 String name = element.getAttribute("name");    
  24.                 bean.addPropertyValue("name", name);    
  25.   
  26.                 String age = element.getAttribute("age");    
  27.                 if (StringUtils.hasText(age)) {    
  28.                     bean.addPropertyValue("age", Integer.valueOf(age));    
  29.                 }    
  30.             }    
  31.     }  
  32. }  

JavaBean:Student

[java] view plain copy
  1. package com.luyee.bat.spring;  
  2.   
  3. public class Student {  
  4.       
  5.     private String name;  
  6.       
  7.     private int age;  
  8.   
  9.     public String getName() {  
  10.         return name;  
  11.     }  
  12.   
  13.     public void setName(String name) {  
  14.         this.name = name;  
  15.     }  
  16.   
  17.     public int getAge() {  
  18.         return age;  
  19.     }  
  20.   
  21.     public void setAge(int age) {  
  22.         this.age = age;  
  23.     }  
  24.       
  25.       
  26.   
  27. }  


测试:applicationContex.xml(people:student就好比bean)

[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>    
  2. <beans xmlns="http://www.springframework.org/schema/beans"    
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
  4.     xmlns:people="http://www.luyee.com/bat/schema/people"    
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd    
  6.     http://www.luyee.com/bat/schema/people http://www.luyee.com/bat/schema/people.xsd" >    
  7.     <people:student id="student1" name="student1"    
  8.         age="18" />    
  9.           
  10.     <people:student id="student2" name="student2"    
  11.         age="20" />    
  12.     
  13. </beans>   

StudentXsdTest.java

[java] view plain copy
  1. package com.luyee.bat.spring;  
  2.   
  3.     
  4. import org.springframework.context.ApplicationContext;    
  5. import org.springframework.context.support.ClassPathXmlApplicationContext;    
  6.     
  7. public class StudentXsdTest {    
  8.     
  9.     public static void main(String[] args) {    
  10.         ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");    
  11.         Student student1 = (Student) ctx.getBean("student1");    
  12.         Student student2 = (Student) ctx.getBean("student2");    
  13.         System.out.println("name: " +student1.getName()+" age :" + student1.getAge());    
  14.         System.out.println("name: " +student2.getName()+" age :" + student2.getAge());    
  15.     }    
  16. }    

 

输出:

 

[plain] view plain copy
  1. 八月 13, 2013 8:50:50 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh  
  2. INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@46f7ba12: startup date [Tue Aug 13 20:50:50 CST 2013]; root of context hierarchy  
  3. 八月 13, 2013 8:50:50 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions  
  4. INFO: Loading XML bean definitions from class path resource [applicationContext.xml]  
  5. 八月 13, 2013 8:50:52 下午 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons  
  6. INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@25e9a396: defining beans [student1,student2]; root of factory hierarchy  
  7. name: student1 age :18  
  8. name: student2 age :20  

最后贴个文件结构

 

 

http://blog.csdn.net/luyee2010/article/details/9954941

分享到:
评论

相关推荐

    自定义 Schema 解析 Spring Bean

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

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

    本文将深入探讨Spring自定义配置Schema的可扩展性,特别是在第二部分中的实现细节。 首先,实现自定义配置Schema的关键在于创建一个`NamespaceHandler`。在示例代码中,我们看到`...

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

    在Spring框架中,自定义Schema允许开发者扩展XML配置,创建自己的标签来定义Bean,从而更加灵活地管理应用程序的配置。Spring 2.5引入了这一特性,使得开发者可以在标准的Spring Schema基础上添加自定义功能。以下是...

    扩展Spring schema样例代码 maven

    总的来说,这个“扩展Spring schema样例代码 maven”项目提供了一个实践平台,帮助开发者了解并掌握如何在Spring中创建自定义schema以及在Maven项目中进行整合。通过学习和分析这个项目,你可以加深对Spring框架的...

    Spring 自定义注解的解析

    总的来说,Spring自定义注解的解析是一个强大且灵活的工具,可以帮助我们实现更精细化的代码组织和控制。结合`@ComponentScan`,我们可以轻松地在Spring环境中管理和利用自定义注解,进一步提升代码的可读性和可维护...

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

    本教程将详细讲解如何实现这一过程,通过创建自定义Schema和处理注解,使得Spring能够自动发布基于注解的WebService服务。 首先,创建一个新的Java项目,并引入必要的依赖。如文中所述,可以使用Maven来创建...

    spring schema

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

    spring 自定义xml标签

    3. **注册自定义标签**:在Spring的XML配置文件中,你需要声明自定义命名空间,例如`&lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"&gt;`。...

    spring 自定义xsd

    下面将详细解释如何进行Spring自定义XSD。 首先,你需要创建一个XML Schema文件,比如`myCustomSchema.xsd`。在这个文件中,你可以定义新的元素、属性,甚至引用Spring的标准元素。例如,你可以定义一个`myBean`...

    spring自定义标签

    接下来,我们需要在Spring的主配置文件中引入这个自定义schema,这样Spring才能识别我们定义的标签: ```xml &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...

    Spring Aop Schema实现

    本篇文章将深入探讨Spring AOP的Schema实现,即基于XML配置的方式来理解和应用AOP。 一、Spring AOP基础概念 1. 切面(Aspect):切面是关注点的模块化,例如日志、事务管理。在Spring AOP中,切面由通知(Advice...

    这一次搞懂Spring自定义标签以及注解解析原理说明.docx

    总的来说,Spring自定义标签和注解解析原理的学习,不仅能够帮助开发者深入理解Spring的工作机制,还能提供自定义配置和扩展Spring功能的能力。通过这种方式,开发者可以根据项目需求创建出更符合业务逻辑的配置方式...

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

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

    Spring AOP之基于Schema配置总结与案例

    此外,Spring还提供了自定义注解的方式定义切面,使得代码更加简洁和易读。 总之,Spring AOP基于Schema的配置方式为开发者提供了一种灵活的手段,能够方便地管理和控制横切关注点,提高了代码的可维护性和可复用性...

    Spring源码解密之自定义标签与解析

    本篇文章将深入探讨Spring自定义标签的定义、解析以及相关源码分析。 首先,自定义标签的定义通常涉及到两个主要步骤: 1. **定义XSD文件**: XSD(XML Schema Definition)文件用于描述XML文档的结构和数据类型...

    Spring-Security3.0自定义表结构

    ### Spring Security 3.0 自定义表结构详解 在企业级应用开发中,Spring Security作为Spring框架的一个子项目,提供了一套完整的权限管理和安全性解决方案。它不仅能够处理身份验证(authentication)和授权...

    基于Spring开发之自定义标签及其解析

    自定义标签的实现离不开XML Schema的定义,我们可以参照spring-beans.xsd来进行自定义标签的定义。 首先,我们需要定义一个最简单的标签,例如:该标签只包含了若干属性,我们就在xsd文件中这么定义: &lt;!-- 声明一...

    JSON Schema 校验库——json-schema-validator(java版本).rar

    4. **与其他框架的集成**:库可以方便地与Spring、Jackson、Gson等Java JSON处理框架集成,使得在整个应用程序中实现JSON Schema验证变得简单。 5. **性能优化**:虽然JSON Schema验证可能涉及复杂的递归和规则检查...

    spring-5.2.19.RELEASE-schema.zip

    标题 "spring-5.2.19.RELEASE-schema.zip" 提供的是Spring框架的一个特定版本——5.2.19的架构定义文件。这个压缩包包含了一系列与Spring框架相关的XML架构文件,这些文件定义了Spring配置文件中可以使用的元素、...

    Spring Cloud 中文文档.pdf

    - **Schema 注册表支持**:Spring Cloud Stream 支持 Schema 注册表,用于管理 Schema 的版本和演变。 - **Schema 注册服务器**:Schema 注册服务器是 Schema 注册表的核心组件。 - **Schema 注册表客户端**:Schema...

Global site tag (gtag.js) - Google Analytics