`
tianhei
  • 浏览: 211652 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring自定义属性编辑器

阅读更多

Spring 自定义属性编辑器

 

Spring DI注入的时候可以把普通属性注入进来,但是像Date类型的就无法被识别。这时可以通过Spring的属性编辑器把配置文件中的字符串转化成相应的对象进行注入。

Spring有自带的属性编辑器,我们也可以写自定义的属性编辑器

 

自定义属性编辑器:

继承java.beans.PropertyEditorSupport类,重写其中的setAsText(String text)方法。

再把自定义的属性编辑器注入到Spring中。

 

例子:

JavaBean类

package com.cos.entity;

import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class UserBean {

    private Date birthday;

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
}

 

自定义属性编辑器

package com.cos.entity;

import java.beans.PropertyEditorSupport;
import java.text.ParseException;
import java.text.SimpleDateFormat;

//自己写一个自定义属性编辑器来继承属性编辑器PropertyEditorSupport
public class DatePropertyEditor extends PropertyEditorSupport {

    //时间的格式
    String format;

    public String getFormat() {
        return format;
    }

    public void setFormat(String format) {
        this.format = format;
    }

    //需要重写属性编辑器的setAsText()方法
    @Override
    public void setAsText(String text) {
        try {
            SimpleDateFormat f = new SimpleDateFormat(format);
            //把转换后的值传进去
            this.setValue(f.parse(text));
        } catch (ParseException ex) {
            ex.printStackTrace();
        }
    }
}

 

 

spring配置文件 applicationContext.xml :

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc"
	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
		http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd">

    <!-- 普通属性注入 -->
    <bean id="userBean" class="com.cos.entity.UserBean">
        <!-- 时间属性,需要属性编辑器 -->
        <property name="birthday" value="2011-03-16"/>
    </bean>

    <!-- 特殊属性的注入.把特殊属性注入到CustomEditorConfigurer Bean 里 -->
    <bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
        <property name="customEditors">
            <map>
                <entry key="java.util.Date">
                    <bean class="com.cos.entity.DatePropertyEditor">
                        <property name="format" value="yyyy-MM-dd"/>
                    </bean>
                </entry>
            </map>
        </property>
    </bean>
</beans>

org.springframework.beans.factory.config.CustomEditorConfigurer类可以读取PropertyEditorSupport类及子类,将字符串转化为指定的类型。

PropertyEditorSupport类把要转化的Date类型注入到customEditors  Map中。

 

 

测试类:

package com.cos.entity;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {

    public static void main(String[] args) {
        //通过spring配置文件返回Bean的工厂对象
        BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
        //Bean工厂通过Bean的id得到JavaBean
        UserBean ub = (UserBean) factory.getBean("userBean");
        System.out.println(""+ub.getBirthday());
    }
}

 

0
3
分享到:
评论

相关推荐

    spring 自定义属性编辑器

    这篇博客“spring 自定义属性编辑器”可能详细介绍了如何在Spring中创建和注册自定义属性编辑器,以满足特定的业务需求。 首先,了解Spring中的属性编辑器机制。Spring会自动寻找并使用`java.beans.PropertyEditor`...

    spring中的自定义属性编辑器

    在Spring中,我们可以通过自定义属性编辑器来处理特定类型的值,例如日期、颜色代码或其他自定义对象。这在配置bean属性或处理HTTP请求参数时特别有用。 自定义属性编辑器的创建通常涉及以下步骤: 1. **创建编辑...

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

    在“Spring学习笔记(11)----自定义属性编辑器”这篇博文中,作者深入探讨了如何自定义属性编辑器以满足特定需求。 首先,我们需要了解属性编辑器的工作原理。当IoC容器读取配置文件时,如果发现一个属性值需要...

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

    在Spring 2.0框架中,自定义属性编辑器(Custom Property Editor)是一个重要的功能,它允许开发者扩展Spring的默认属性绑定机制,以处理特定类型的转换。本文将深入探讨这一特性,结合源码分析和实际应用,帮助你...

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

    自定义属性编辑器需要继承`java.beans.PropertyEditorSupport`类,并重写`setAsText()`和`getAsText()`方法,前者用于将文本转换为对象,后者则是将对象转换为字符串。注册自定义属性编辑器可以通过`@InitBinder`...

    spring自定义编辑器

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

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

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

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

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

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

    总之,`SpringPropertyEditorDemo`是一个很好的学习资源,展示了如何在Spring MVC中通过自定义属性编辑器实现用户定义对象集合的绑定。通过这个项目,开发者可以深入理解Spring MVC的数据绑定机制,并掌握处理复杂...

    尚学堂Spring学习笔记

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

    SSM集成应用

    **7.9 spring自定义属性编辑器** 允许开发者定义自己的转换规则,以满足特定的需求。 #### AOP面向切面 **8.1 AOP概述** 面向切面编程是一种编程范式,用于处理横切关注点,即那些散布在整个应用程序中的、与...

    spring自定义标签

    本文将深入探讨Spring自定义标签的概念、实现过程及其在实际开发中的应用。 首先,理解Spring自定义标签的核心思想:通过扩展Spring的`BeanDefinitionParser`接口或使用`BeanDefinitionBuilder`类,我们可以创建...

    spring个人笔记,很好的哦

    总的来说,Spring框架通过其强大的依赖注入机制、灵活的对象作用域和自定义属性编辑器等功能,极大地简化了Java应用程序的开发和维护,使得开发者可以专注于业务逻辑,而非底层的基础设施。理解和掌握这些核心概念...

    Spring个人学习笔记.pdf

    文档中提到了“UtilDatePropertyEditor”,这说明学习者在学习如何在Spring中自定义属性编辑器,以便进行复杂数据类型的转换,如将字符串转换为Date对象。 8. 配置Spring 文档中提到了多个Spring配置相关的知识点,...

    Spring环境搭建

    Spring内建了一些基本的属性编辑器,但你也可以自定义属性编辑器来满足特定需求。自定义属性编辑器需要继承`PropertyEditorSupport`类,并覆盖`setAsText()`方法。例如,你可以创建一个`UtilDatePropertyEditor`来将...

    spring技术

    在这个类中,我们可以通过`initBinder`方法注册自定义的日期编辑器,如`CustomDateEditor`,将日期格式设置为"yyyy-MM-dd",并设置lenient属性为false以确保日期解析的严格性。 此外,如果需要处理时间戳...

    Spring学习笔记

    3. **自定义属性编辑器**:Spring允许开发者自定义属性编辑器,用于处理类型转换,比如将字符串转换为日期等复杂类型,这样在注入时可以处理不同类型的属性。 4. **公共属性的注入**:当多个Bean需要共享同一属性值...

    Spring中属性注入详解

    在Spring框架中,属性注入(Property Injection)是一种...同时,通过自定义属性编辑器,我们可以处理更复杂的类型转换,增强Spring的灵活性。了解并熟练掌握这些知识,将有助于编写出更加解耦和可维护的Spring应用。

    WinForm版 Html编辑器

    WinForm版Html编辑器是一种专为Windows Forms应用程序设计的用户界面组件,用于在桌面应用中创建...具体使用方法通常会在库的文档或示例代码中详细说明,包括如何添加控件到表单、配置编辑器属性、处理用户交互等步骤。

    XML编辑器(方便快捷)

    - **快捷键**:编辑器通常支持自定义快捷键,提升编码效率。 - **多文档编辑**:可以同时打开并编辑多个XML文件,便于比较和合并。 - **版本控制集成**:与Git等版本控制系统集成,方便团队协作和版本管理。 - *...

Global site tag (gtag.js) - Google Analytics