Spring自定义属性编辑器及原理解释.md

来源:互联网 发布:windows苹方字体下载 编辑:程序博客网 时间:2024/04/26 07:03

  • bean的自动装配解释
  • 手动解决方式
  • 自动注入解决方式

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();              }      }}
0 0
原创粉丝点击