ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Spring源码-自定义标签

2022-08-28 13:31:54  阅读:155  来源: 互联网

标签:name 自定义 Spring age public 源码 user id append


一、新建实体类

    public class User implements Serializable {
private String id;

private String name;

private Integer age;

public String getId() {
	return id;
}

public void setId(String id) {
	this.id = id;
}

public String getName() {
	return name;
}

public void setName(String name) {
	this.name = name;
}

public Integer getAge() {
	return age;
}

public void setAge(Integer age) {
	this.age = age;
}

@Override
public String toString() {
	final StringBuffer sb = new StringBuffer("User{");
	sb.append("id='").append(id).append('\'');
	sb.append(", name='").append(name).append('\'');
	sb.append(", age=").append(age);
	sb.append('}');
	return sb.toString();
}
  }

二、新建xsd文件

    <?xml version="1.0" encoding="UTF-8"?>
    <schema xmlns="http://www.w3.org/2001/XMLSchema"
    		targetNamespace="http://www.myself.com/schema/user"
    		xmlns:tns="http://www.myself.com/schema/user"
    		elementFormDefault="qualified">
    	<element name="user">
    		<complexType>
    			<attribute name ="id" type = "string"/>
    			<attribute name ="name" type = "string"/>
    			<attribute name ="age" type = "integer"/>
    		</complexType>
    	</element>
    </schema>

三、新建NamespaceHandler和BeanDefinitionParser

    public class UserBeanDefinitionParser extends AbstractSingleBeanDefinitionParser {
  @Override
  protected Class<?> getBeanClass(Element element) {
		return User.class;
	  }

@Override
protected void doParse(Element element, BeanDefinitionBuilder builder) {
	if (element.hasAttribute("id")) {
		builder.addPropertyValue("id", element.getAttribute("id"));
	}
	if (element.hasAttribute("name")) {
		builder.addPropertyValue("name", element.getAttribute("name"));
	}
	if (element.hasAttribute("age")) {
		builder.addPropertyValue("age", element.getAttribute("age"));
	}
    }
    }

    public class UserNamespaceHandler extends NamespaceHandlerSupport {
    @Override
	  public void init() {
  		registerBeanDefinitionParser("user", new UserBeanDefinitionParser ());
  	  }
    }

四、在resources目录下建立META-INF目录并新建spring.handlers和spring.schemas

spring.handlers

    http\://www.myself.com/schema/user=selftag.UserNamespaceHandler

spring.schemas

    http\://www.myself.com/schema/user.xsd=META-INF/user.xsd

五、使用

在app-test.xml文件的beans标签中加入

    xmlns:aaa="http://www.myself.com/schema/user"
    http://www.myself.com/schema/user http://www.myself.com/schema/user.xsd

bean定义

    <aaa:user name="李四" id="123" age="45"></aaa:user>

运行

    ApplicationContext applicationContext = new MyClassPathApplicationContext("classpath:app-${user}.xml");
    User user = applicationContext.getBean(User.class);
System.out.println(user);

标签:name,自定义,Spring,age,public,源码,user,id,append
来源: https://www.cnblogs.com/shigongp/p/16632604.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有