博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring-基于Spring自定义标签
阅读量:6418 次
发布时间:2019-06-23

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

  hot3.png

Spring-基于Spring自定义标签

需求:基于Spring自定义标签,实现通过Bean方式来统一时间格式,避免在开发中不同开发者使用的时间格式不一致导致系统难以维护。自定义标签方式如下:

1. 核心配置文件位置如下:

125210_ZSqV_2882456.png

2. 核心配置内容如下:

huhx.xsd

spring.handlers

http\://www.huhx.com/schema/ch=cn.edu.his.pay.handler.MyNamespaceHandler

spring.schemas

http\://www.huhx.com/schema/ch.xsd=META-INF/huhx.xsd

MyNamespaceHandler.java

package cn.edu.his.pay.handler;import org.springframework.beans.factory.xml.NamespaceHandlerSupport;public class MyNamespaceHandler extends NamespaceHandlerSupport {    @Override    public void init() {        registerBeanDefinitionParser("dateformat", new SimpleDateFormatBeanDefinitionParser());    }}

SimpleDateFormatBeanDefinitionParser.java

package cn.edu.his.pay.handler;import java.text.SimpleDateFormat;import org.springframework.beans.factory.support.BeanDefinitionBuilder;import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;import org.springframework.util.StringUtils;import org.w3c.dom.Element;public class SimpleDateFormatBeanDefinitionParser extends AbstractSingleBeanDefinitionParser {    protected Class getBeanClass(Element element) {        return SimpleDateFormat.class;    }    protected void doParse(Element element, BeanDefinitionBuilder bean) {        String pattern = element.getAttribute("pattern");        bean.addConstructorArgValue(pattern);        String lenient = element.getAttribute("lenient");        if (StringUtils.hasText(lenient)) {            bean.addPropertyValue("lenient", Boolean.valueOf(lenient));        }    }}

spring-dispatcher.xml 标签使用代码(核心部分)

测试代码如下:

package cn.edu.his.pay.handler;import java.text.SimpleDateFormat;import java.util.Date;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Main {	public static void main(String[] args) {		ApplicationContext context = new ClassPathXmlApplicationContext("spring/spring-dispatcher.xml");		SimpleDateFormat info = (SimpleDateFormat) context.getBean("dateFormat");		System.out.println("自定义的dateFormat:"+info.format(new Date()));		System.out.println("系统的dateFormat:"+new SimpleDateFormat().format(new Date()));				/*		自定义的dateFormat:2018-05-08 12:38		系统的dateFormat:18-5-8 下午12:38		*/	}}
@Controllerpublic class DateformatController {		@Autowired	@Qualifier("dateFormat")	private SimpleDateFormat date;		@ResponseBody	@RequestMapping("/date")	public String date(){		return date.format(new Date());	}}

4. 总结

通过上面自定义标签的实现,这样我们可以在xml定义不同格式的Bean,通过Bean注入的方式来复用功能代码。只要涉及到代码复用或代码重构,我们也可以考虑使用这种基于xml标签配置方式来做。这里列举的方式比较简单,但不是重点,重点是在对于Spring的架构的扩展机制更加深入的理解。

转载于:https://my.oschina.net/qrmc/blog/1808783

你可能感兴趣的文章
我的友情链接
查看>>
MHA配置参数
查看>>
深入理解Lock
查看>>
vim的块选择
查看>>
HTML --块
查看>>
在DLL中获取主进程窗口句柄
查看>>
基于消息队列的双向通信
查看>>
一个不错的loading效果
查看>>
Debian允许root用户登录
查看>>
linux的文件系统
查看>>
上云利器,K8S应用编排设计器之快到极致
查看>>
袋鼠云服务案例系列 | 从DB2到MySQL,某传统金融平台的互联网转型之路
查看>>
RealServer配置脚本
查看>>
九月份技术指标 华为交换机的简单配置
查看>>
python 写json格式字符串到文件
查看>>
分布式文件系统MogileFS
查看>>
电力线通信载波模块
查看>>
linux vim详解
查看>>
Java23种设计模式案例:策略模式(strategy)
查看>>
XML解析之DOM4J
查看>>