`
Nathanyu
  • 浏览: 1037 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

详解Spring自定义属性编辑器

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

Spring 自定义属性编辑器


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


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


自定义属性编辑器:


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


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

 

例子:

 

JavaBean类

 

Java代码

    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;     
        }     
    }    

 

自定义属性编辑器

 

Java代码

 

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 :

 

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中。

 

测试类:

 

Java代码

 

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());     
    }     
}  
 
分享到:
评论

相关推荐

    Spring2.0学习笔记

    1、ICO环境的搭建 2、属性注入 3、自定义属性编辑器 4、AOP实现 5、事务处理 6、Spring事务配置的五种方式 详解 7、Struts与Spring集成方案

    Spring.3.x企业应用开发实战(完整版).part2

    5.2.2 Spring默认属性编辑器 5.2.3 自定义属性编辑器 5.3 使用外部属性文件 5.3.1 使用外部属性文件 5.3.2 使用加密的属性文件 5.3.3 属性文件自身的引用 5.4 引用Bean的属性值 5.5 国际化信息 5.5.1 基础知识 5.5.2...

    Spring-Reference_zh_CN(Spring中文参考手册)

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的...

    Spring 2.0 开发参考手册

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...

    Spring中文帮助文档

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...

    Spring3.x企业应用开发实战(完整版) part1

    5.2.2 Spring默认属性编辑器 5.2.3 自定义属性编辑器 5.3 使用外部属性文件 5.3.1 使用外部属性文件 5.3.2 使用加密的属性文件 5.3.3 属性文件自身的引用 5.4 引用Bean的属性值 5.5 国际化信息 5.5.1 基础知识 5.5.2...

    Spring API

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...

    spring chm文档

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...

    Maven权威指南 很精典的学习教程,比ANT更好用

    平台分类器 11.8. 小结 12. Maven Assemblies 12.1. Introduction 12.2. Assembly Basics 12.2.1. Predefined Assembly Descriptors 12.2.2. Building an Assembly 12.2.3. Assemblies as Dependencies ...

    swing界面设计之JTree

    定义 bean 属性 21 创建 to-do 列表:创建一个可重用组件并在表中显示数据 23 创建一个可重用的面板 23 将 bean 组合在一起 24 添加一个表并重用这个面板 26 定义表模型 28 显示列表中的项 29 创建 to-do 列表:完成...

    webx3框架指南PDF教程附学习Demo

    • 扩展性 —— Webx 3.0对Spring做了扩展,使Spring Bean不再是“bean”,而是升级成“组件”。一个组件可以扩展另一个组件,也可以被其它组件扩展。这种机制造就了Webx的非常好的扩展性,且比未经扩展的Spring更易...

    asp.net知识库

    关于能自定义格式的、支持多语言的、支持多数据库的代码生成器的想法 发布Oracle存储过程包c#代码生成工具(CodeRobot) New Folder XCodeFactory3.0完全攻略--序 XCodeFactory3.0完全攻略--基本思想 XCodeFactory...

    JBPM4工作流应用开始指南.rar

    26 2.3 安装脚本详解 27 2.3.1 关于配置文件 30 2.3.2 关于依赖库 31 2.4 安装到JBoss 31 2.5 安装到Tomcat 32 2.6 基于Web的Signavio流程设计器 33 2.6.1 jBPM Web流程设计器简介 33 2.6.2 独立安装Signavio 34 ...

Global site tag (gtag.js) - Google Analytics