<!-- 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); } }