博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring自定义schema学习
阅读量:5069 次
发布时间:2019-06-12

本文共 3670 字,大约阅读时间需要 12 分钟。

【转载请注明作者和,欢迎讨论,相互学习。】

一、前言

1. 最近在学习dubbo,里边很多如provider、consumer、registry的配置都是通过spring自定义Schema来实现的,为此,我也学习下如何自定义Schema。

     

2.学习目标

 完成自定义一个shema名称为test,节点名为user的例子。

 

二、准备内容

1.编写java bean

2.编写xsd配置文件

3.编写spring.handlers和spring.schmas

4.编写applicationContext.xml

5.编写NamespaceHandler和BeanDefinitionParser

    

三、晒代码

1.工程目录结构

    

2.java bean

1 package com.cnblogs.ericlin.spring; 2  3 public class User { 4     private String id; 5     private String name; 6     private String sex; 7     private int age; 8  9     public String getId() {10         return id;11     }12 13     public void setId(String id) {14         this.id = id;15     }16 17     public String getName() {18         return name;19     }20 21     public void setName(String name) {22         this.name = name;23     }24 25     public String getSex() {26         return sex;27     }28 29     public void setSex(String sex) {30         this.sex = sex;31     }32 33     public int getAge() {34         return age;35     }36 37     public void setAge(int age) {38         this.age = age;39     }40 }

 

 3.xsd文件

1 
2
8 9
10
11 12
13
14
15
16
17
18
姓名
19
20
21 22
23
24
性别
25
26
27 28
29
30
年龄
31
32
33
34
35
36
37

     

4.spring.handlers文件内容

   http\://www.cnblogs.com/eric-lin/schema/user=com.cnblogs.ericlin.spring.schema.UserNamespaceHandler

 

5.spring.schemas文件内容

   http\://www.cnblogs.com/eric-lin/schema/user/user.xsd=META-INF/user.xsd

6.applicationContext.xml

 

7.NamespaceHandler

 

package com.cnblogs.ericlin.spring.schema;import org.springframework.beans.factory.xml.NamespaceHandlerSupport;public class UserNamespaceHandler extends NamespaceHandlerSupport {    public void init() {        registerBeanDefinitionParser("user", new UserBeanDefinitionParser());    }}

 

8.BeanDefinitionParser

 

package com.cnblogs.ericlin.spring.schema;import org.springframework.beans.factory.support.BeanDefinitionBuilder;import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;import org.w3c.dom.Element;import com.cnblogs.ericlin.spring.User;public class UserBeanDefinitionParser extends AbstractSingleBeanDefinitionParser {    @Override    protected Class
getBeanClass(Element element) { return User.class; } @Override protected void doParse(Element element, BeanDefinitionBuilder bean) { String id = element.getAttribute("id"); String name = element.getAttribute("name"); String sex = element.getAttribute("sex"); int age = Integer.parseInt(element.getAttribute("age")); bean.addPropertyValue("id", id); bean.addPropertyValue("name", name); bean.addPropertyValue("sex", sex); bean.addPropertyValue("age", age); }}

9测试类

package com.cnglogs.ericlin.spring;import org.junit.Test;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.cnblogs.ericlin.spring.User;public class TestSpringSchema {    @SuppressWarnings("resource")    @Test    public void test() {        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");        User user = (User) context.getBean("eric");        System.out.println(user.getId());        System.out.println(user.getName());        System.out.println(user.getSex());        System.out.println(user.getAge());    }}

 

自此,自定义spring shema例子完成。

   

转载于:https://www.cnblogs.com/eric-lin/p/4968985.html

你可能感兴趣的文章
Android TextView加上阴影效果
查看>>
《梦断代码》读书笔记(三)
查看>>
Java8 Lambda表达应用 -- 单线程游戏server+异步数据库操作
查看>>
AngularJS学习篇(一)
查看>>
关于Xshell无法连接centos6.4的问题
查看>>
css3动画——基本准则
查看>>
输入月份和日期,得出是今年第几天
查看>>
pig自定义UDF
查看>>
spring security 11种过滤器介绍
查看>>
代码实现导航栏分割线
查看>>
大数据学习系列(8)-- WordCount+Block+Split+Shuffle+Map+Reduce技术详解
查看>>
【AS3代码】播放FLV视频流的三步骤!
查看>>
枚举的使用
查看>>
luogu4849 寻找宝藏 (cdq分治+dp)
查看>>
日志框架--(一)基础篇
查看>>
关于源程序到可运行程序的过程
查看>>
转载:mysql数据库密码忘记找回方法
查看>>
scratch少儿编程第一季——06、人在江湖混,没有背景怎么行。
查看>>
C# Async与Await的使用
查看>>
Mysql性能调优
查看>>