扩展schema,定义自己的bean属性。。不错!
主要:
1,定义META-INF下.xsd文件,这里是people.xsd;定义spring.handlers;定义spring.schemas
2,定义namaspace解析类,这里是StudentNamespaceHandler
3,定义beanDefinition,这里是StudentBeanDefinitionParser
4,当然还有相关的javabean定义,这里是Student.java
详细代码:
people.xsd
- <?xml version="1.0" encoding="UTF-8"?>
- <xsd:schema xmlns="http://www.luyee.com/bat/schema/people"
- xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:beans="http://www.springframework.org/schema/beans"
- targetNamespace="http://www.luyee.com/bat/schema/people"
- elementFormDefault="qualified"
- attributeFormDefault="unqualified">
- <xsd:import namespace="http://www.springframework.org/schema/beans" />
- <xsd:element name="student">
- <xsd:complexType>
- <xsd:complexContent>
- <xsd:extension base="beans:identifiedType">
- <xsd:attribute name="name"
- type="xsd:string">
- <xsd:annotation>
- <xsd:documentation>
- 姓名
- </xsd:documentation>
- </xsd:annotation>
- </xsd:attribute>
- <xsd:attribute name="age"
- type="xsd:string">
- <xsd:annotation>
- <xsd:documentation>
- 年龄
- </xsd:documentation>
- </xsd:annotation>
- </xsd:attribute>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
- </xsd:element>
- </xsd:schema>
spring.handlers;
- http\://www.luyee.com/bat/schema/people=com.luyee.bat.spring.StudentNamespaceHandler
spring.schemas
- http\://www.luyee.com/bat/schema/people.xsd=META-INF/people.xsd
StudentNamespaceHandler和StudentBeanDefinitionParser
- package com.luyee.bat.spring;
- import java.text.SimpleDateFormat;
- import org.springframework.beans.factory.support.BeanDefinitionBuilder;
- import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
- import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
- import org.springframework.util.StringUtils;
- import org.w3c.dom.Element;
- public class StudentNamespaceHandler extends NamespaceHandlerSupport {
- public void init() {
- registerBeanDefinitionParser("student", new StudentBeanDefinitionParser());
- }
- class StudentBeanDefinitionParser extends AbstractSingleBeanDefinitionParser{
- protected Class getBeanClass(Element element) {
- return Student.class;
- }
- protected void doParse(Element element, BeanDefinitionBuilder bean) {
- String name = element.getAttribute("name");
- bean.addPropertyValue("name", name);
- String age = element.getAttribute("age");
- if (StringUtils.hasText(age)) {
- bean.addPropertyValue("age", Integer.valueOf(age));
- }
- }
- }
- }
JavaBean:Student
- package com.luyee.bat.spring;
- public class Student {
- private String name;
- private int age;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- }
测试:applicationContex.xml(people:student就好比bean)
- <?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:people="http://www.luyee.com/bat/schema/people"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
- http://www.luyee.com/bat/schema/people http://www.luyee.com/bat/schema/people.xsd" >
- <people:student id="student1" name="student1"
- age="18" />
- <people:student id="student2" name="student2"
- age="20" />
- </beans>
StudentXsdTest.java
- package com.luyee.bat.spring;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- public class StudentXsdTest {
- public static void main(String[] args) {
- ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
- Student student1 = (Student) ctx.getBean("student1");
- Student student2 = (Student) ctx.getBean("student2");
- System.out.println("name: " +student1.getName()+" age :" + student1.getAge());
- System.out.println("name: " +student2.getName()+" age :" + student2.getAge());
- }
- }
输出:
- 八月 13, 2013 8:50:50 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh
- INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@46f7ba12: startup date [Tue Aug 13 20:50:50 CST 2013]; root of context hierarchy
- 八月 13, 2013 8:50:50 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
- INFO: Loading XML bean definitions from class path resource [applicationContext.xml]
- 八月 13, 2013 8:50:52 下午 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
- INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@25e9a396: defining beans [student1,student2]; root of factory hierarchy
- name: student1 age :18
- name: student2 age :20
最后贴个文件结构
http://blog.csdn.net/luyee2010/article/details/9954941
相关推荐
本篇文章将聚焦于“自定义Schema解析Spring Bean”这一主题,这是一项高级功能,允许开发者扩展Spring的XML配置能力,以满足特定项目的需要。 自定义Schema解析是Spring框架提供的一个强大特性,它允许开发者创建...
本文将深入探讨Spring自定义配置Schema的可扩展性,特别是在第二部分中的实现细节。 首先,实现自定义配置Schema的关键在于创建一个`NamespaceHandler`。在示例代码中,我们看到`...
在Spring框架中,自定义Schema允许开发者扩展XML配置,创建自己的标签来定义Bean,从而更加灵活地管理应用程序的配置。Spring 2.5引入了这一特性,使得开发者可以在标准的Spring Schema基础上添加自定义功能。以下是...
总的来说,这个“扩展Spring schema样例代码 maven”项目提供了一个实践平台,帮助开发者了解并掌握如何在Spring中创建自定义schema以及在Maven项目中进行整合。通过学习和分析这个项目,你可以加深对Spring框架的...
总的来说,Spring自定义注解的解析是一个强大且灵活的工具,可以帮助我们实现更精细化的代码组织和控制。结合`@ComponentScan`,我们可以轻松地在Spring环境中管理和利用自定义注解,进一步提升代码的可读性和可维护...
本教程将详细讲解如何实现这一过程,通过创建自定义Schema和处理注解,使得Spring能够自动发布基于注解的WebService服务。 首先,创建一个新的Java项目,并引入必要的依赖。如文中所述,可以使用Maven来创建...
在压缩包中的“spring扩展schema.docx”文件,可能是对Spring Schema的详细扩展说明,包括自定义扩展点、自定义标签以及如何在Spring中使用这些扩展来创建自己的解决方案。例如,开发者可能会定义自己的命名空间来...
3. **注册自定义标签**:在Spring的XML配置文件中,你需要声明自定义命名空间,例如`<beans xmlns="http://www.springframework.org/schema/beans" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo">`。...
下面将详细解释如何进行Spring自定义XSD。 首先,你需要创建一个XML Schema文件,比如`myCustomSchema.xsd`。在这个文件中,你可以定义新的元素、属性,甚至引用Spring的标准元素。例如,你可以定义一个`myBean`...
接下来,我们需要在Spring的主配置文件中引入这个自定义schema,这样Spring才能识别我们定义的标签: ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...
本篇文章将深入探讨Spring AOP的Schema实现,即基于XML配置的方式来理解和应用AOP。 一、Spring AOP基础概念 1. 切面(Aspect):切面是关注点的模块化,例如日志、事务管理。在Spring AOP中,切面由通知(Advice...
总的来说,Spring自定义标签和注解解析原理的学习,不仅能够帮助开发者深入理解Spring的工作机制,还能提供自定义配置和扩展Spring功能的能力。通过这种方式,开发者可以根据项目需求创建出更符合业务逻辑的配置方式...
在Spring框架中,扩展点是允许用户自定义行为的关键组件,而`NamespaceHandler`就是其中的一个重要扩展点,主要用于处理自定义的XML命名空间。当我们需要在Spring配置文件中引入自定义标签时,`NamespaceHandler`起...
此外,Spring还提供了自定义注解的方式定义切面,使得代码更加简洁和易读。 总之,Spring AOP基于Schema的配置方式为开发者提供了一种灵活的手段,能够方便地管理和控制横切关注点,提高了代码的可维护性和可复用性...
本篇文章将深入探讨Spring自定义标签的定义、解析以及相关源码分析。 首先,自定义标签的定义通常涉及到两个主要步骤: 1. **定义XSD文件**: XSD(XML Schema Definition)文件用于描述XML文档的结构和数据类型...
### Spring Security 3.0 自定义表结构详解 在企业级应用开发中,Spring Security作为Spring框架的一个子项目,提供了一套完整的权限管理和安全性解决方案。它不仅能够处理身份验证(authentication)和授权...
自定义标签的实现离不开XML Schema的定义,我们可以参照spring-beans.xsd来进行自定义标签的定义。 首先,我们需要定义一个最简单的标签,例如:该标签只包含了若干属性,我们就在xsd文件中这么定义: <!-- 声明一...
4. **与其他框架的集成**:库可以方便地与Spring、Jackson、Gson等Java JSON处理框架集成,使得在整个应用程序中实现JSON Schema验证变得简单。 5. **性能优化**:虽然JSON Schema验证可能涉及复杂的递归和规则检查...
标题 "spring-5.2.19.RELEASE-schema.zip" 提供的是Spring框架的一个特定版本——5.2.19的架构定义文件。这个压缩包包含了一系列与Spring框架相关的XML架构文件,这些文件定义了Spring配置文件中可以使用的元素、...
- **Schema 注册表支持**:Spring Cloud Stream 支持 Schema 注册表,用于管理 Schema 的版本和演变。 - **Schema 注册服务器**:Schema 注册服务器是 Schema 注册表的核心组件。 - **Schema 注册表客户端**:Schema...