`
Nathanyu
  • 浏览: 1061 次
  • 性别: 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());     
    }     
}  
 
分享到:
评论

相关推荐

    spring自定义编辑器

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

    Spring中属性注入详解

    为了让Spring能够使用这个自定义编辑器,我们需要在配置文件中注册它: ```xml &lt;bean class="org.springframework.beans.factory.config.CustomEditorConfigurer"&gt; ``` 这样,当我们通过`...

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

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

    SpringMVC自定义参数绑定实现详解

    使用WebBindingInitializer可以让多个Controller共用自定义的属性编辑器。可以自定义WebBindingInitializer,注入到处理器适配器中。如果想多个Controller需要共同注册相同的属性编辑器,可以实现...

    UEditor在线编辑器

    如果你想要自定义编辑器的功能或者对源码有深入理解,可以查看这个仓库。通常,你可以找到关于如何配置 UEditor、如何处理特殊需求的代码示例,以及如何扩展其功能的说明。 总的来说,UEditor 是一个强大且灵活的...

    spring mvc

    8. **自定义属性编辑器** - Spring MVC 允许注册自定义的属性编辑器,以便在将请求参数转换为方法参数时执行特定的转换逻辑。 9. **数据准备** - 在处理请求之前,可以通过 `@ModelAttribute` 注解的方法预先填充...

    FCK编辑器源码工程

    **FCK编辑器源码工程详解** FCKeditor是一款经典的开源Web富文本编辑器,它在Web开发领域中被广泛使用,特别是在需要提供用户友好、类似桌面应用的文本编辑体验时。这款编辑器允许用户在网页上进行文字格式化、插入...

    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.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中WebDataBinder使用详解

    registerCustomEditor()方法用于将自定义的属性编辑器注册到WebDataBinder中,例如自定义的日期编辑器。 结论 WebDataBinder是Spring MVC框架中的一种数据绑定机制,用于将Web请求参数绑定到JavaBean的属性上。...

    Spring 2.0 开发参考手册

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

    Ueditor编辑器java版(Jsp)

    - 它提供了一整套完善的API接口,允许开发者自定义编辑器的行为和功能。 - 编辑器界面友好,用户体验良好,且具备良好的浏览器兼容性,支持主流的Chrome、Firefox、Safari、Edge及IE浏览器。 2. **Java版集成** ...

    summernote 在线编辑器

    - "Java":这可能表示编辑器可以与Java后端进行交互,例如使用Spring MVC等框架进行数据处理。 - "jsp":Java Server Pages,一种动态网页技术,可能表明在Java Web环境中使用summernote的一种方式。 - "jqury":...

    spring-tool-suite-4-4.7.1.RELEASE-e4.16.0-win32.win32.x86_64.zip

    基于Eclipse的代码编辑器提供了强大的Java和Groovy代码补全、重构功能,对于Spring框架特有的注解,如`@Autowired`、`@Service`、`@Repository`等,STS4能提供精确的上下文感知提示,使得编码更高效。 **5. 测试...

    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. 内建...

Global site tag (gtag.js) - Google Analytics