属性编辑器是 JavaBeans API 的一项功能,用于在文本值之间来回转换属性值。 每个属性编辑器仅设计用于某种类型的属性。 您可能希望使用属性编辑器来简化 bean 配置。 在本教程中,我们将学习在您的应用程序中配置 spring 的内置CustomDateEditor
类。
通常,您将在使用容器之前在容器中注册一个属性编辑器。 CustomEditorConfigurer
类被实现为内置的 bean 工厂后处理器,供您在实例化任何 bean 之前注册自定义属性编辑器。
例如,在您的应用程序中,如果要将日期值从字符串格式转换为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>
从 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));
}
}
现在,每次,当您以字符串格式(例如)传递 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
值被设置。
学习愉快!