Spring 属性编辑器 – CustomEditorConfigurer示例
Spring 属性编辑器 – CustomEditorConfigurer
示例
属性编辑器是 JavaBeans API 的一项功能,用于在文本值之间来回转换属性值。 每个属性编辑器仅设计用于某种类型的属性。 您可能希望使用属性编辑器来简化 bean 配置。 在本教程中,我们将学习在您的应用程序中配置 spring 的内置CustomDateEditor
类。
CustomEditorConfigurer
和CustomDateEditor
配置
通常,您将在使用容器之前在容器中注册一个属性编辑器。 CustomEditorConfigurer
类被实现为内置的 bean 工厂后处理器,供您在实例化任何 bean 之前注册自定义属性编辑器。
为什么选择CustomDateEditor
例如,在您的应用程序中,如果要将日期值从字符串格式转换为java.util.Date
对象,反之亦然,则可以使用CustomDateEditor
类。 Spring 附带的CustomDateEditor
类用于将日期字符串转换为java.util.Date
属性。
可以将CustomEditorConfigurer
bean 声明到应用程序上下文中,如下所示:
beans.xml
<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
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
。
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
<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
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
值被设置。