定制属性解析器

定制属性解析器

1JavaBean的接口java.beans.PropertyEditor提供将字符串映射成非String类型的方法(其直接实现类为PropertyEditorSupport:

1)、getText( ):返回一个属性值的字符串

2)setAsText(String text):将传递进来的字符串赋给Bean的属性

2Spring提供了几个建立在PropertyEditorSupport之上的定制编译器:

1URLEditor:将字符串与java.net.URL 相互转换

2ClassEditor:使用包含全称类名的字符串设置java.lang.Class属性

3CustomDateEditor:使用某种java.text.DateFormat对象将字符串设置给java.util.Date属性

4FileEditor:使用包含文件路径的字符串设置java.io.File属性

5LocalEditor:使用包含地域性息(如:en_US)的字符串设置java.util.Local属性

6StringArrayPropertyEditor:将一个包含逗号的String转换成String数组属性

7StringTrimmerEditor:自动修正字符串属性,可选择将字符串转变成null

3案例分析:

cn.csdn.service. AddressServiceImpl

package cn.csdn.service;

public class AddressServiceImpl {

    private String address;

    private String code;

    private String tel;

    省略了setget方法

}

cn.csdn.service. EmpServiceImpl

package cn.csdn.service;

public class EmpServiceImpl {

    /** 姓名 */

    private String name;

    /** 职位 */

    private String title;

    /** 家庭住址 */

    private AddressServiceImpl homeAddress;

    /** 公司地址 */

    private AddressServiceImpl companyAddress;

省略了setget方法

}

cn.csdn.editer. AddressEditer

package cn.csdn.editer;

import java.beans.PropertyEditorSupport;

import cn.csdn.service.AddressServiceImpl;

public class AddressEditer extends PropertyEditorSupport{

    @Override

    public void setAsText(String text) throws IllegalArgumentException {

       if(text!=null&&!text.trim().equals("")){

           System.out.println(text);

           String str[]=text.split("-");

           if(str.length>2){

              AddressServiceImpl asi=new AddressServiceImpl();

              asi.setAddress(str[0]);

              asi.setCode(str[1]);

              asi.setTel(str[2]);

              setValue(asi);

           }

       }

       setValue(null);

    }

}

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

<!-- 定义一个自定义编译器 -->

<bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer">

    <property name="customEditors">

       <map>

           <entry key="cn.csdn.service.AddressServiceImpl">

              <bean class="cn.csdn.editer.AddressEditer"></bean>

           </entry>

       </map>

    </property>

</bean>

<bean id="empServiceImpl" class="cn.csdn.service.EmpServiceImpl" scope="singleton">

    <property name="name"><value>kouxiaolin</value></property>

    <property name="title"><value>student</value></property>

<!—一般写法-->

    <property name="homeAddress">

       <bean class="cn.csdn.service.AddressServiceImpl">

           <property name="address"><value>保定</value></property>

           <property name="code"><value>071000</value></property>

           <property name="tel"><value>15530232157</value></property>

       </bean>

    </property>

    <!-- 采用 自定义的属性编译器解析-->

    <property name="companyAddress">

       <value>衡水-073000-15530232157</value>

    </property>

</bean>

</beans>

 

 

你可能感兴趣的:(spring,bean,.net,xml)