Spring 内部 Bean 装配 , 【属性编辑器】

<!-- scatter -->
<bean id="scatter" class="scatter.Scatter">
    <property name="driverClass" value="${jdbc.driverclass}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
    
    <!-- 内部 bean  装配   -->
    <property name="homeAdd">
        <bean class="scatter.Address">
            <property name="province" value="guangdong"/>
            <property name="city" value="guangzhou"/>
            <property name="street" value="zhongkai"/>
        </bean>
    </property>
    
    <!-- 【属性编辑器】 装配 -->
    <property name="comAdd">
        <value>shandong-jinan-dajie</value>
    </property>
</bean>

 

<!-- 注册属性编辑器 -->
<bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
    <property name="customEditors">
        <map>
            <!-- 对应类,寻找对应的属性编辑器 -->
            <entry key="scatter.Address">
                <bean class="editor.AddressEditor"/>
            </entry>
        </map>
    </property>
</bean>

 

/**
 * 自定义属性编辑器
 */
public class AddressEditor extends PropertyEditorSupport {
    @Override
    public void setAsText(String text) throws IllegalArgumentException {
        if(text != null && text.length() > 0){
            String[] ss = text.split("-");
            if(ss != null && ss.length >2){
                Address a = new Address(ss[0], ss[1], ss[2]);
                
                // 将转换后的地址对象设置给相应的属性上
                setValue(a);
                return;
            }
        }
        setValue(null);
    }
}

 

posted @ 2013-12-15 19:12  聆听自由  阅读(245)  评论(0编辑  收藏  举报