`
imaginecup
  • 浏览: 87385 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Spring属性编辑器

阅读更多


什么是属性编辑器,作用?
 * 自定义属性编辑器,spring配置文件中的字符串转换成相应的对象进行注入
 spring已经有内置的属性编辑器,我们可以根据需求自己定义属性编辑器

 * 如何定义属性编辑器?
  * 继承PropertyEditorSupport类,覆写setAsText()方法(注意要将处理完成的对象通过PropertyEditorSupport的setValue设置回去)

 *向IoC容器中注册自定义的属性编辑器(两种方式:1 在配置文件中注册 2 在程序中注册)

接下来我们就看看一个关于日期的属性编辑器的部署过程:

首先定义一个测试类:

package com.property;

import java.util.Date;

public class User {
	private String username;
	private Date birthday;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}

}

 然后继承PropertyEditorSupport,实现自定义的属性编辑器:

package com.property;
import java.beans.PropertyEditorSupport;
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class UtilDatePropertyEditor extends PropertyEditorSupport{
 private String format;
 public UtilDatePropertyEditor(String format) {
  this.format=format;
 }
 public void setAsText(String text) throws IllegalArgumentException {
  SimpleDateFormat sdf=new SimpleDateFormat(format);
  try {
   Date date=sdf.parse(text);
   this.setValue(date);
  } catch (ParseException e) {
   System.out.println(e.getMessage()+"日期的格式不对");
  }
 }
 public void setFormat(String format) {
  this.format = format;
 }
 
}

 接着我们首先定义配置文件:(采用配置方式)

<?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://www.springframework.org/schema/beans 
 http://www.springframework.org/schema/beans/spring-beans.xsd
">
<bean id="user" class="com.property.User">
	<property name="username" value="imaginecup"/>
	<property name="birthday" value="1989-05-12"/>
</bean>
<!-- 自定义的属性编辑器 -->
<bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer">
		<property name="customEditors">
			<map>
				<entry key="java.util.Date">
					<bean class="com.property.UtilDatePropertyEditor">
						<property name="format" value="yyyy-MM-dd"/>
					</bean>
				</entry>
			</map>
		</property>
	</bean>
</beans>

 

package com.property;

import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.CustomEditorConfigurer;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;

public class TestPropertyEditor {
	public static void main(String[] args) {
//		ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext-*.xml");
//		User user=(User)ac.getBean("user");
//		System.out.println("name:"+user.getUsername()+"\nbirthday:"+user.getBirthday());
		//它等价于
		ConfigurableBeanFactory beanFactory=new XmlBeanFactory(new ClassPathResource("applicationContext-beans.xml"));
		CustomEditorConfigurer configurer=(CustomEditorConfigurer)beanFactory.getBean("customEditorConfigurer");
		configurer.postProcessBeanFactory((ConfigurableListableBeanFactory) beanFactory);
		User user=(User)beanFactory.getBean("user");
		System.out.println("name:"+user.getUsername()+"\nbirthday:"+user.getBirthday());
		
	}

}

 

输出结果:

name:imaginecup
birthday:Fri May 12 00:00:00 CDT 1989

 

接下来我们在程序中注册自定义的属性编辑器:

package com.property;

import org.springframework.beans.PropertyEditorRegistrar;
import org.springframework.beans.PropertyEditorRegistry;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;

public class TestPropertyEditorResgister {
	public static void main(String[] args) {
		ConfigurableBeanFactory beanFactory=new XmlBeanFactory(new ClassPathResource("applicationContext-beans.xml"));
		beanFactory.addPropertyEditorRegistrar(new PropertyEditorRegistrar() {
			public void registerCustomEditors(PropertyEditorRegistry registry) {
				registry.registerCustomEditor(java.util.Date.class, new UtilDatePropertyEditor("yyyy-MM-dd"));
				
			}
		});
		User user=(User)beanFactory.getBean("user");
		System.out.println("name:"+user.getUsername()+"\nbirthday:"+user.getBirthday());
		
	}

}

 

1
0
分享到:
评论

相关推荐

    spring中的自定义属性编辑器

    在Spring框架中,属性编辑器(PropertyEditor)扮演着至关重要的角色。它们是JavaBeans规范的一部分,用于在Java对象和其字符串表示之间进行转换。在Spring中,我们可以通过自定义属性编辑器来处理特定类型的值,...

    spring2.0(三) 自定义属性编辑器

    一、Spring属性编辑器概述 Spring MVC和Spring Bean的初始化过程中,属性编辑器扮演着关键角色。当Spring尝试将配置文件中的属性值注入到Bean的属性时,如果该属性类型与配置值的类型不匹配,Spring会查找合适的...

    spring 自定义属性编辑器

    在Spring框架中,属性编辑器(PropertyEditor)是一种强大的工具,允许我们自定义类型转换过程。当我们需要将字符串形式的数据转换为Java对象时,属性编辑器就发挥了关键作用。例如,从请求参数或配置文件中读取的...

    Spring学习笔记(11)----自定义属性编辑器

    在Spring框架中,属性编辑器(PropertyEditor)扮演着至关重要的角色。它们是JavaBeans规范的一部分,用于在Java对象和字符串之间进行数据转换。在Spring中,属性编辑器被广泛应用于IoC容器,用于处理配置文件中的...

    Spring视频教程(1)

    此外,"009_Spring属性编辑器.avi"和"011_Spring属性编辑器_日期格式可配置_多文件读取方式.avi"将讲解Spring属性编辑器的用法,如何处理复杂类型的属性注入,如日期格式化和文件操作。 "010_上午内容回顾.avi"是对...

    浅谈Spring的属性编辑器的使用

    在Spring框架中,属性编辑器(PropertyEditor)是一个关键组件,它负责将配置文件中非标准格式的数据转换为JavaBean的可识别类型。属性编辑器是基于JavaBeans规范的,因此理解这个概念需要先了解JavaBean和JavaBeans...

    spring自定义编辑器

    ### Spring自定义编辑器详解 #### 一、引言 在Spring框架中,自定义编辑器主要用于处理数据类型的转换问题,特别是在将用户输入的数据转换为Java对象时非常有用。例如,用户通过表单提交了一个日期格式的字符串,...

    自定义属性编辑及Spring处理器映射

    java中的属性编辑器详细说明及Spring中AnnotationMethodHandlerAdapter说明和DefaultAnnotationHandlerMapping的说明及用法

    springmvc自定义属性编辑器和参数解析器

    在Spring MVC框架中,属性编辑器(PropertyEditor)和参数解析器(HandlerMethodArgumentResolver)是两个关键组件,用于处理数据转换和模型绑定的过程。它们是实现灵活性和扩展性的重要手段,尤其在处理用户输入...

    《精通Spring2.X企业应用开发详解》

    - **Spring属性编辑器**:介绍如何使用Spring的属性编辑器来实现更为灵活的数据类型转换。 - **使用外部属性文件**:探讨如何利用外部属性文件来管理应用程序的配置信息,特别是加密属性文件的使用技巧。 - **国际化...

    尚学堂Spring学习笔记

    本文档记录了尚学堂Spring学习笔记的重要知识点,涵盖了Spring配置文件的设置、普通属性的注入、自定义属性编辑器、公共属性的注入、Spring注解等内容。 一、Spring配置文件的设置 在MyEclipse中编写Spring配置...

    蜜蜂EL编辑器V3.6

    在实际应用中,蜜蜂EL编辑器V3.6可以帮助开发者更高效地编写和调试EL表达式,尤其是在处理JSP页面、JSF组件以及Spring MVC的视图逻辑时。它不仅简化了JavaBeans的访问,也降低了代码的复杂度,提高了代码的可读性...

    富文本编辑kindeditor使用 java 实现 spring mvc

    在编辑器的页面中,你需要创建一个元素,其action属性指向处理表单提交的Controller方法。 3. **编写Controller**:在Java代码中,创建一个Spring MVC的Controller类,定义一个接收POST请求的方法,该方法的参数...

    yml编辑器eclipse插件(yamleditor)

    springboot流行用yml属性文件,由于其特殊的语法,没有编辑器可能容易写错,而察觉不到,导致程序出了问题都不知道问题出在哪里。 yaml Editor是eclipse应用商店推荐的一款yml编辑器,为避免在线安装过慢,特分享...

    SpringPropertyEditorDemo:演示使用自定义属性编辑器绑定Spring-MVC中用户定义的对象的集合

    在Spring MVC框架中,属性编辑器(PropertyEditor)是一个关键组件,它负责将用户的输入数据转换为应用程序可以处理的对象类型。这个"SpringPropertyEditorDemo"项目是为了演示如何使用自定义属性编辑器来处理用户...

    spring-ide插件

    2. **Spring 配置编辑器**:Spring IDE 提供了一个可视化编辑器,可以方便地创建、编辑和验证 Spring 配置文件(如 `applicationContext.xml`)。该编辑器支持自动完成、错误检测和智能提示,帮助开发者快速定位和...

    Springframework开发参考手册chm格式

     Spring Framework 开发手册 chm,一份对Spring特性的参考指南,内容涵盖Spring概述、使用场景、Spring2.0新特性、面向切面编程、中间层、WEB层、校验,数据绑定,BeanWrapper,与属性编辑器、使用Spring进行面向...

    XML编辑器(方便快捷)

    - **代码高亮**:XML编辑器通常会提供代码高亮功能,以区分不同的元素、属性和文本,提高可读性。 - **自动完成**:在编写XML时,编辑器会提供自动完成或智能感知功能,帮助用户快速输入正确的元素名、属性名和值...

    freemarker编辑器

    本教程将基于提供的"freemarker编辑器"来详细介绍如何配置和使用Freemarker,以及它在实际开发中的应用。 一、Freemarker简介 Freemarker是一个开源的、基于Java的模板引擎,它能够将设计人员的模板与程序逻辑分离...

    spring个人笔记,很好的哦

    本文将深入探讨Spring的核心概念和配置,包括依赖库、配置文件、对象管理、作用域以及属性编辑器等关键点。 首先,Spring框架的依赖库包括SPRING_HOME/dist/spring.jar,以及jakarta-commons/commons-logging.jar和...

Global site tag (gtag.js) - Google Analytics