• Spring5 自定义标签开发


    spring5 自定义脚本开发步骤

    1 定义bean,

    1. public class User {
    2. private String id;
    3. private String userName;
    4. private String email;
    5. private String password;
    6. public String getId() {
    7. return id;
    8. }
    9. public void setId(String id) {
    10. this.id = id;
    11. }
    12. public String getUserName() {
    13. return userName;
    14. }
    15. public void setUserName(String userName) {
    16. this.userName = userName;
    17. }
    18. public String getEmail() {
    19. return email;
    20. }
    21. public void setEmail(String email) {
    22. this.email = email;
    23. }
    24. public String getPassword() {
    25. return password;
    26. }
    27. public void setPassword(String password) {
    28. this.password = password;
    29. }
    30. }

    2 自定义 BeanDefinitionParser,继承  AbstractSingleBeanDefinitionParser

    1. import org.springframework.beans.factory.support.BeanDefinitionBuilder;
    2. import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
    3. import org.springframework.util.StringUtils;
    4. import org.w3c.dom.Element;
    5. public class UserBeanDefinitionParser extends AbstractSingleBeanDefinitionParser {
    6. protected Class getBeanClass(Element element){
    7. return User.class;
    8. }
    9. protected void doParse(Element element, BeanDefinitionBuilder builder){
    10. String userName = element.getAttribute("userName");
    11. String email = element.getAttribute("email");
    12. String password = element.getAttribute("password");
    13. String id = element.getAttribute("id");
    14. if (StringUtils.hasText(userName)){
    15. builder.addPropertyValue("userName", userName);
    16. }
    17. if (StringUtils.hasText(email)){
    18. builder.addPropertyValue("email", email);
    19. }
    20. if (StringUtils.hasText(password)){
    21. builder.addPropertyValue("password", password);
    22. }
    23. if (StringUtils.hasText(id)){
    24. builder.addPropertyValue("id", id);
    25. }
    26. }
    27. }

    3 定义 NameSpaceHandler, 继承 NamespaceHandlerSupport,

    1. import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
    2. public class UserNameSpaceHandler extends NamespaceHandlerSupport {
    3. @Override
    4. public void init() {
    5. registerBeanDefinitionParser("user", new UserBeanDefinitionParser());
    6. }
    7. }

    4 自定义配置文件,在resource/META-INF 目录下,新建spring.handlers , spring.schemas , user.xsd 文件。

    spring.handlers 文件内容如下:

    http\://www.gientech.com/schema/user=com.gientech.selftag.UserNameSpaceHandler

    spring.schemas 文件内容如下:

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

    spring.xsd 文件内容如下:

    1. "1.0" encoding="UTF-8"?>
    2. <schema xmlns="http://www.w3.org/2001/XMLSchema"
    3. targetNamespace="http://www.gientech.com/schema/user"
    4. xmlns:tns="http://www.gientech.com/schema/user"
    5. elementFormDefault="qualified">
    6. <element name="user">
    7. <complexType>
    8. <attribute name="id" type="string">attribute>
    9. <attribute name="userName" type="string">attribute>
    10. <attribute name="email" type="string">attribute>
    11. <attribute name="password" type="string">attribute>
    12. complexType>
    13. element>
    14. schema>

    5 spring-content.xml 引入命名空间,使用新标签配置bean

    6 启动Spring 项目, 获取bean的值,

    7 打印结果如下:

    自定义变迁开发完成,按照步骤可正确开发自定义标签。

  • 相关阅读:
    Postgres数据备份与恢复
    C++指针解读(2)-- 指针变量
    [机缘参悟-27]:鬼谷子-反应篇-反说之术,以毒攻毒,以错推错
    Visual Studio Code(vs code) 安装c# .net环境 solution
    利用华为云ECS服务器搭建安防视频监控平台
    VMware中Ubuntu(Linux)无法连接网络解决办法记录
    vue3.0项目实战系列文章 - 使用周期函数
    智能聊天机器人如何帮助跨境电商卖家提高成交转化率?
    中国出口商对人民币波动持乐观态度!贬值“不会继续”!
    计算机网络自学笔记008_Real(应用层)
  • 原文地址:https://blog.csdn.net/zgcy123456/article/details/133470333