zoukankan      html  css  js  c++  java
  • Spring 4 CustomEditorConfigurer Example--转

    原文地址:http://howtodoinjava.com/spring/spring-core/registering-built-in-property-editors-in-spring-4-customeditorconfigurer-example/

    A property editor is a feature of the JavaBeans API for converting property values to and from text values. Each property editor is designed for a certain type of property only. You may wish to employ property editors to simplify your bean configurations. In this tutorial, we will learn to configure spring’s build-in CustomDateEditor class into your application.

    CustomEditorConfigurer and CustomDateEditor configurations

    Normally, you will register a property editor in the container before it may be used. The CustomEditorConfigurer class is implemented as a built-in bean factory post processor for you to register your custom property editors before any of the beans get instantiated.

    For example, in your application if you want to convert date values from string format to java.util.Date objects or vice-versa, you can use CustomDateEditor class. The CustomDateEditor class that comes with Spring is for converting date strings into java.util.Date properties.

    CustomEditorConfigurer bean can be declared into application context as below:

    <bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
        <property name="propertyEditorRegistrars">
            <list>
                <bean class="com.howtodoinjava.demo.processors.CustomDateEditorRegistrar" />
            </list>
        </property>
    </bean>

    CustomDateEditorRegistrar class should be declared in below manner from spring 4.x onwards.

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

    CustomDateEditor Example

    Now everytime, when you pass a bean property value (of type java.util.Date) in string format e.g. 2007-09-30, it will be automatically converted to date object.

    Let’s Test the configuration. To test, I have created a EmployeeDTO bean having one date field as 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 + "]";
        }
    }

    It’s bean definition in applicationContext.xml file is as below:

    <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>

    Let’s fetch the bean from context. It should have it’s dateOfBirth filed populated with given date value.

    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

    Great. Date value is set.

    Happy Learning !!

  • 相关阅读:
    非凸优化的方法
    随机梯度下降与批量梯度下降
    python requests用于测试
    Vscode中运行js文件或部分代码 ,在下面cmd输出中显示结果
    ts问题处理(2): 'Promise' only refers to a type, but is being used as a value here.
    typeScript入门基础 (1)
    node启动服务报错Node.js Error: Cannot find module express
    能改变this各种情况下的总结,还有没有总结到的,请留言!!
    flutter安装与配置 v1.2.1版本
    vue项目webpack打包后有的文件big 问题
  • 原文地址:https://www.cnblogs.com/davidwang456/p/6688926.html
Copyright © 2011-2022 走看看