spring 自定义schema
来源:互联网 发布:淘宝炉石60包专店 编辑:程序博客网 时间:2024/05/30 04:08
扩展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.StudentNamespaceHandlerspring.schemas
http\://www.luyee.com/bat/schema/people.xsd=META-INF/people.xsd
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 prepareRefreshINFO: 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 loadBeanDefinitionsINFO: Loading XML bean definitions from class path resource [applicationContext.xml]八月 13, 2013 8:50:52 下午 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletonsINFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@25e9a396: defining beans [student1,student2]; root of factory hierarchyname: student1 age :18name: student2 age :20最后贴个文件结构
- spring 自定义schema
- spring的自定义schema
- spring自定义schema
- spring schema自定义扩展
- 自定义spring schema简化与canal集成
- 自定义spring schema简化与canal集成
- Spring扩展Schema提供自定义配置支持
- 实战spring自定义属性(schema):快速体验
- spring-基于Spring可扩展Schema提供自定义配置
- 基于Spring可扩展Schema提供自定义配置支持
- 基于Spring可扩展Schema提供自定义配置支持
- 基于Spring可扩展Schema提供自定义配置支持
- 基于Spring可扩展Schema提供自定义配置支持
- 基于Spring可扩展Schema提供自定义配置支持
- 基于Spring可扩展Schema提供自定义配置支持
- 基于Spring可扩展Schema提供自定义配置支持
- 基于Spring可扩展Schema提供自定义配置支持
- 基于Spring可扩展Schema提供自定义配置支持
- LeetCode-Symmetric Tree
- 几种任务调度的 Java 实现方法与比较
- 状态压缩dp hdu 4539 郑厂长系列故事——排兵布阵
- float布局和inline-block布局【原创】
- 数据库工具java部分
- spring 自定义schema
- svn
- 笔试题
- 【WA】题目1137:浮点数加法
- Unix/Linux 脚本中 “set -e” 的作用
- //链表的模板实现
- stm32f4-discovery st-link no target connected问题
- HDU 1018Big Number(简单题目,JAVA练手)
- Emgu.CV 人脸锁定