什么是属性编辑器,作用?
* 自定义属性编辑器,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());
}
}
分享到:
相关推荐
在Spring框架中,属性编辑器(PropertyEditor)扮演着至关重要的角色。它们是JavaBeans规范的一部分,用于在Java对象和其字符串表示之间进行转换。在Spring中,我们可以通过自定义属性编辑器来处理特定类型的值,...
一、Spring属性编辑器概述 Spring MVC和Spring Bean的初始化过程中,属性编辑器扮演着关键角色。当Spring尝试将配置文件中的属性值注入到Bean的属性时,如果该属性类型与配置值的类型不匹配,Spring会查找合适的...
在Spring框架中,属性编辑器(PropertyEditor)是一种强大的工具,允许我们自定义类型转换过程。当我们需要将字符串形式的数据转换为Java对象时,属性编辑器就发挥了关键作用。例如,从请求参数或配置文件中读取的...
在Spring框架中,属性编辑器(PropertyEditor)扮演着至关重要的角色。它们是JavaBeans规范的一部分,用于在Java对象和字符串之间进行数据转换。在Spring中,属性编辑器被广泛应用于IoC容器,用于处理配置文件中的...
此外,"009_Spring属性编辑器.avi"和"011_Spring属性编辑器_日期格式可配置_多文件读取方式.avi"将讲解Spring属性编辑器的用法,如何处理复杂类型的属性注入,如日期格式化和文件操作。 "010_上午内容回顾.avi"是对...
在Spring框架中,属性编辑器(PropertyEditor)是一个关键组件,它负责将配置文件中非标准格式的数据转换为JavaBean的可识别类型。属性编辑器是基于JavaBeans规范的,因此理解这个概念需要先了解JavaBean和JavaBeans...
### Spring自定义编辑器详解 #### 一、引言 在Spring框架中,自定义编辑器主要用于处理数据类型的转换问题,特别是在将用户输入的数据转换为Java对象时非常有用。例如,用户通过表单提交了一个日期格式的字符串,...
java中的属性编辑器详细说明及Spring中AnnotationMethodHandlerAdapter说明和DefaultAnnotationHandlerMapping的说明及用法
在Spring MVC框架中,属性编辑器(PropertyEditor)和参数解析器(HandlerMethodArgumentResolver)是两个关键组件,用于处理数据转换和模型绑定的过程。它们是实现灵活性和扩展性的重要手段,尤其在处理用户输入...
- **Spring属性编辑器**:介绍如何使用Spring的属性编辑器来实现更为灵活的数据类型转换。 - **使用外部属性文件**:探讨如何利用外部属性文件来管理应用程序的配置信息,特别是加密属性文件的使用技巧。 - **国际化...
本文档记录了尚学堂Spring学习笔记的重要知识点,涵盖了Spring配置文件的设置、普通属性的注入、自定义属性编辑器、公共属性的注入、Spring注解等内容。 一、Spring配置文件的设置 在MyEclipse中编写Spring配置...
在实际应用中,蜜蜂EL编辑器V3.6可以帮助开发者更高效地编写和调试EL表达式,尤其是在处理JSP页面、JSF组件以及Spring MVC的视图逻辑时。它不仅简化了JavaBeans的访问,也降低了代码的复杂度,提高了代码的可读性...
在编辑器的页面中,你需要创建一个元素,其action属性指向处理表单提交的Controller方法。 3. **编写Controller**:在Java代码中,创建一个Spring MVC的Controller类,定义一个接收POST请求的方法,该方法的参数...
springboot流行用yml属性文件,由于其特殊的语法,没有编辑器可能容易写错,而察觉不到,导致程序出了问题都不知道问题出在哪里。 yaml Editor是eclipse应用商店推荐的一款yml编辑器,为避免在线安装过慢,特分享...
在Spring MVC框架中,属性编辑器(PropertyEditor)是一个关键组件,它负责将用户的输入数据转换为应用程序可以处理的对象类型。这个"SpringPropertyEditorDemo"项目是为了演示如何使用自定义属性编辑器来处理用户...
2. **Spring 配置编辑器**:Spring IDE 提供了一个可视化编辑器,可以方便地创建、编辑和验证 Spring 配置文件(如 `applicationContext.xml`)。该编辑器支持自动完成、错误检测和智能提示,帮助开发者快速定位和...
Spring Framework 开发手册 chm,一份对Spring特性的参考指南,内容涵盖Spring概述、使用场景、Spring2.0新特性、面向切面编程、中间层、WEB层、校验,数据绑定,BeanWrapper,与属性编辑器、使用Spring进行面向...
- **代码高亮**:XML编辑器通常会提供代码高亮功能,以区分不同的元素、属性和文本,提高可读性。 - **自动完成**:在编写XML时,编辑器会提供自动完成或智能感知功能,帮助用户快速输入正确的元素名、属性名和值...
本教程将基于提供的"freemarker编辑器"来详细介绍如何配置和使用Freemarker,以及它在实际开发中的应用。 一、Freemarker简介 Freemarker是一个开源的、基于Java的模板引擎,它能够将设计人员的模板与程序逻辑分离...
本文将深入探讨Spring的核心概念和配置,包括依赖库、配置文件、对象管理、作用域以及属性编辑器等关键点。 首先,Spring框架的依赖库包括SPRING_HOME/dist/spring.jar,以及jakarta-commons/commons-logging.jar和...