spring 源码学习三:自定义属性编辑器

spring 源码学习三:自定义属性编辑器

在日常的工作中,我们经常遇到一些特殊的案例需要自定义属性的解析器来完成对应的属性解析工作,大家需要理解它的本质来进行随意的扩展工作,但是此处的扩展没有大家想象的那么简单,详细的流程讲课的时候我大概讲一下,但是要复杂很多。

需求:自定义属性编辑customer所属的address属性

1、自定义address类和customer类,address是customer属性之一

 

2、自定义xml解析规则类

public class AddressPropertyEditor extends PropertyEditorSupport {
@Override
public void setAsText(String text) {
try {
String[] adds = text.split("_");
Address address = new Address();
address.setProvince(adds[0]);
address.setCity(adds[1]);
address.setTown(adds[2]);
this.setValue(address);
} catch (Exception e) {
e.printStackTrace();
}
}
}

3、自定义注册xml解析规则类

public class AddressPropertyEditorRegistar implements PropertyEditorRegistrar {
@Override
public void registerCustomEditors(PropertyEditorRegistry registry) {
registry.registerCustomEditor(Address.class,new AddressPropertyEditor());
}
}

4、xml配置

<?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.xsd">

<!-- 自定义bean -->
<bean id="customer" class="org.springframework.chenhuadong.beans.pojo.Customer">
<property name="name" value="王德法"></property>
<property name="address" value="四川省_成都市_天府新区"></property>
</bean>

<!--<bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">-->
<!--<property name="customEditors">-->
<!--<map>-->
<!--<entry key="org.springframework.chenhuadong.beans.pojo.Address">-->
<!--<value>org.springframework.chenhuadong.selfeditor.AddressPropertyEditor</value>-->
<!--</entry>-->
<!--</map>-->
<!--</property>-->
<!--</bean>-->

<bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="propertyEditorRegistrars">
<list>
<bean class="org.springframework.chenhuadong.selfeditor.AddressPropertyEditorRegistar"></bean>
</list>
</property>
</bean>

</beans>

 

 


posted @ 2020-10-27 16:08  心思慕晨  阅读(155)  评论(0)    收藏  举报