Spring的属性编辑器

简介: bean类 import java.util.Date; public class Bean { private Date date; public Date getDate() { return date; ...

bean类

import java.util.Date;  
  
public class Bean {  
    private Date date;  
    public Date getDate()  
    {  
        return date;  
    }  
    public void setDate(Date date)  
    {  
        this.date = date;  
    }  
}  

配置xml

<bean id="bean" class="com.spring.bean.Bean">  
    <property name="date" value="2009-11-21"/>  
</bean>  

spring不能将string转换成date类型,没有匹配的编辑器或者转换机制。如果想实现string转换成Date,有两种解决办法。

使用自定义属性编辑器

import java.beans.PropertyEditorSupport;  
import java.text.SimpleDateFormat;  
import java.util.Date;    
public class DatePropertyEditor extends PropertyEditorSupport  
{  
   String format; @Override
public void setAsText(String text) throws IllegalArgumentException { try { SimpleDateFormat sdf=new SimpleDateFormat(format);
       Date date
=sdf.parse(text); this.setValue(date); //把转换后的值传过去 } catch (Exception e) { e.printStackTrace(); } } }

写完编辑器后还需要把编辑器注入到spring中。 

    <bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer">  
        <!-- 把值注入到CustomEditorConfigurer的 Map类型的customEditors属性-->  
        <property name="customEditors">  
            <map>  
                <entry key="java.util.Date">  
                    <!-- 内部bean只供自己使用 -->  
                    <bean class="com.spring.util.DatePropertyEditor">
              <property name="format" value="yyyy/MM/dd"></property>
            </bean>
</entry> </map> </property> </bean>

或者

@InitBinder
public void initBinder(WebDataBinder binder) {
  binder.registerCustomEditor(Date.class, "date", new DatePropertyEditor()); 
}

注册Spring自带的属性编辑器CustomDateEditor

public class DatePropertyEditorRegistrar implements PropertyEditorRegistrar{
    public void registerCustomEditors(PropertyEditorRegistry registry) {
        registry.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true));
    }
}

通过在配置文件中将自定义的DatePropertyEditorRegistrar注册进入org.Springframework.beans.factory.config.CustomEditorConfigurer的propertyEditorRegistrars属性中

  <bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
        <property name="propertyEditorRegistrars">
            <list>
                <ref bean="datePropertyEditorRegistrar"/>
            </list>
        </property>
    </bean>

 

 

 

 

目录
相关文章
|
5月前
|
存储 Java 数据安全/隐私保护
|
2月前
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
|
3月前
|
Java 测试技术 数据库
Spring Boot中的项目属性配置
本节课主要讲解了 Spring Boot 中如何在业务代码中读取相关配置,包括单一配置和多个配置项,在微服务中,这种情况非常常见,往往会有很多其他微服务需要调用,所以封装一个配置类来接收这些配置是个很好的处理方式。除此之外,例如数据库相关的连接参数等等,也可以放到一个配置类中,其他遇到类似的场景,都可以这么处理。最后介绍了开发环境和生产环境配置的快速切换方式,省去了项目部署时,诸多配置信息的修改。
|
4月前
|
XML druid Java
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
45 0
|
2月前
|
Java Spring 开发者
Spring 框架配置属性绑定大比拼:@Value 与 @ConfigurationProperties,谁才是真正的王者?
【8月更文挑战第31天】Spring 框架提供 `@Value` 和 `@ConfigurationProperties` 两种配置属性绑定方式。`@Value` 简单直接,适用于简单场景,但处理复杂配置时略显不足。`@ConfigurationProperties` 则以类级别绑定配置,简化代码并更好组织配置信息。本文通过示例对比两者特点,帮助开发者根据具体需求选择合适的绑定方式,实现高效且易维护的配置管理。
40 0
|
2月前
|
缓存 Java 数据库连接
Spring Boot 资源文件属性配置,紧跟技术热点,为你的应用注入灵动活力!
【8月更文挑战第29天】在Spring Boot开发中,资源文件属性配置至关重要,它让开发者能灵活定制应用行为而不改动代码,极大提升了可维护性和扩展性。Spring Boot支持多种配置文件类型,如`application.properties`和`application.yml`,分别位于项目的resources目录下。`.properties`文件采用键值对形式,而`yml`文件则具有更清晰的层次结构,适合复杂配置。此外,Spring Boot还支持占位符引用和其他外部来源的属性值,便于不同环境下覆盖默认配置。通过合理配置,应用能快速适应各种环境与需求变化。
36 0
|
4月前
|
运维 Java 测试技术
Spring运维之boo项目表现层测试加载测试的专用配置属性以及在JUnit中启动web服务器发送虚拟请求
Spring运维之boo项目表现层测试加载测试的专用配置属性以及在JUnit中启动web服务器发送虚拟请求
41 3
|
4月前
|
运维 Java 关系型数据库
Spring运维之boot项目bean属性的绑定读取与校验
Spring运维之boot项目bean属性的绑定读取与校验
50 2
|
4月前
|
XML 运维 Java
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
44 1
|
3月前
|
搜索推荐 C#
XAF 属性编辑器(PropertyEditor)- 原理篇
XAF Blazor 的 PropertyEditor 在 DEV 24.1.3 中经历了重大改进,更接近 WinForm。PropertyEditor 担任业务逻辑与各平台交互的角色,利用 INotifyPropertyChanged 监听属性变化。新版本弃用了 ComponentAdapter,代之以接口和基类,简化自定义编辑器的创建,降低了复杂度,同时增加了 ComponentModel 的 ComponentType 属性以自动化组件渲染和属性映射。这使得 Blazor 的 PropertyEditor 创建变得更为简便。