zoukankan      html  css  js  c++  java
  • Spring自定义属性编辑器及原理解释.md

    bean的自动装配解释

    • 之前有构造注入和设值注入,但是也是手动的

    • autowire =”byname”

    • 这里要注意自动装配的话,不能装配特殊类型,比如日期类型(要用自定义属性编辑器

    手动解决方式

    我们知道的普通是这样解决的:

    <bean id="myBean" class="com.bean.myBean">
            <property name="date" ref="date"/>
        </bean>
        <bean id="date" class="java.util.Date">
        </bean>  

    自动注入解决方式

    但是要自动注入要用自定义属性编辑器

               原理:类似于拦截器,当遇到map中需要过滤的类型时,就按照所配置的属性编辑器处理注入的值,这个值的类型是String类型的,由属性编辑器来决定转换类型。
    
        <!--自定义属性编辑    -->
        <bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">   <!--配置一个自定义编辑器-->  
            <property name="customEditors">
                <map>  
                    <entry key="java.util.Date">  
                        <bean class="com.bean.DateTest">  
                            <property name="date" value="yyyy-mm-dd" />  <!--注入需要转换的格式,注入到DateTest 中-->  
                        </bean>  
                    </entry>  
                </map>  
            </property>  
        </bean>  
    
        <bean id="md" class="com.bean.myBean">  
            <property name="date">  
                <value>2011-1-1</value>  
            </property>  
        </bean>  
    
    package com.bean;
    import java.beans.PropertyEditorSupport;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    public class DateTest extends PropertyEditorSupport{
        private String date;//表示格式,是自动注入的
        public String getDate() {
            return date;
        }
        public void setDate(String date) {
            this.date = date;
        }
    
        @Override
        public void setAsText(String text) throws IllegalArgumentException {
            System.out.println("text:"+text);
             SimpleDateFormat sdf = new SimpleDateFormat(date);
            Date date = null;
            try {
                date = sdf.parse(text);//传的是字符串,解析为Date数据
                this.setValue(date);  
                } catch (ParseException e) {  
                    e.printStackTrace();  
                }  
    
        }
    
    }
  • 相关阅读:
    软件命名的几种常见方式
    软件过程与项目管理第一周作业
    DOS命令大全 系统管理员专用
    数据库事务的作用
    利用C#事务处理对数据库进行多重操作
    JSP标签分页实现
    使用自定义端口连接sql server2008
    Solr4.4.0的安装与配置
    Android中如何使用ViewPager实现类似laucher左右拖动效果
    Android中Timer使用方法
  • 原文地址:https://www.cnblogs.com/pzqu/p/9457635.html
Copyright © 2011-2022 走看看