ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# Spring 属性编辑器 – `CustomEditorConfigurer`示例 > 原文: [https://howtodoinjava.com/spring-core/registering-built-in-property-editors-in-spring-4-customeditorconfigurer-example/](https://howtodoinjava.com/spring-core/registering-built-in-property-editors-in-spring-4-customeditorconfigurer-example/) 属性编辑器是 JavaBeans API 的一项功能,用于在文本值之间来回转换属性值。 每个属性编辑器仅设计用于某种类型的属性。 您可能希望使用属性编辑器来简化 bean 配置。 在本教程中,我们将学习在您的应用程序中配置 spring 的内置`CustomDateEditor`类。 ## `CustomEditorConfigurer`和`CustomDateEditor`配置 通常,您将在使用容器之前在容器中注册一个属性编辑器。 `CustomEditorConfigurer`类被实现为内置的 bean 工厂后处理器,供您在实例化任何 bean 之前注册自定义属性编辑器。 #### 为什么选择`CustomDateEditor` 例如,在您的应用程序中,如果要将日期值从字符串格式转换为`java.util.Date`对象,反之亦然,则可以使用`CustomDateEditor`类。 Spring 附带的`CustomDateEditor`类用于将日期字符串转换为`java.util.Date`属性。 可以将`CustomEditorConfigurer` bean 声明到应用程序上下文中,如下所示: `beans.xml` ```java <bean class="org.springframework.beans.factory.config.CustomEditorConfigurer"> <property name="propertyEditorRegistrars"> <list> <bean class="com.howtodoinjava.demo.processors.CustomDateEditorRegistrar" /> </list> </property> </bean> ``` #### 注册/配置`CustomDateEditor` 从 **spring 4.x 开始**应该以以下方式声明`CustomDateEditorRegistrar`类。 `CustomDateEditorRegistrar.java` ```java public class CustomDateEditorRegistrar implements PropertyEditorRegistrar { public void registerCustomEditors(PropertyEditorRegistry registry) { registry.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), false)); } } ``` ## `CustomDateEditor`演示 现在,每次,当您以字符串格式(例如)传递 bean 属性值(类型`java.util.Date`)时, `2007-09-30`,它将自动转换为`Date`对象。 让我们测试配置。 为了测试,我创建了一个`EmployeeDTO` bean,其中一个日期字段为`dateOfBirth`。 ```java public class EmployeeDTO { private Integer id; private String firstName; private String lastName; private String designation; private Date dateOfBirth; //Setters and Getters @Override public String toString() { return "EmployeeDTO [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", designation=" + designation + ", dateOfBirth=" + dateOfBirth + "]"; } } ``` `applicationContext.xml`文件中的`Employee` bean 定义如下: `applicationContext.xml` ```java <bean class="org.springframework.beans.factory.config.CustomEditorConfigurer"> <property name="propertyEditorRegistrars"> <list> <bean class="com.howtodoinjava.demo.processors.CustomDateEditorRegistrar" /> </list> </property> </bean> <!-- employeeDTO bean --> <bean id="employeeDTO" class="com.howtodoinjava.demo.model.EmployeeDTO"> <property name="firstName" value="Lokesh" /> <property name="lastName" value="Gupta" /> <property name="designation" value="Manager" /> <property name="dateOfBirth" value="2007-09-30" /> </bean> ``` 让我们从上下文中获取 bean。 应该在`dateOfBirth`字段中填充给定的日期值。 `TestSpringContext.java` ```java public class TestSpringContext { @SuppressWarnings("resource") public static void main(String[] args) throws Exception { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); EmployeeDTO employeeDTO = (EmployeeDTO) context.getBean("employeeDTO"); System.out.println(employeeDTO.getDateOfBirth()); } } Output: Sun Sep 30 00:00:00 IST 2007 ``` 很棒。`Date`值被设置。 学习愉快!