SpringIOC自定义属性编辑器PropertyEditor

Spring中我们可以使用属性编辑器来将特定的字符串转换为对象
String--转换-->object

java.beans.PropertyEditor(JDK中的接口)用于将xml文件中字符串转换为特定的类型,同时JDK为我们提供一个实现类java.beans.PropertyEditorSupport

Spring在注入时,如果遇到类型不一致(例如需要Address类型但是用户传了个String)则会去调用相应的属性编辑器进行转换

spring会调用属性编辑器的setAsText(String str)进行处理用户传的字符串,并调用getValue()方法获取处理后得到的对象
在代码中处理完后需要调用setValue方法,要不然spring调用getValue方法拿不到处理后转换成的对象

自定义属性编辑器示例:
注意:在配置文件中CustomEditorConfigurer类的使用,在htmlsingle中直接搜索类名即可

Address类

public class Address {
private String city;
private String street;
private String country;
set/get
.....
}

Student类

public class Student {
private long id;
private String name;
private boolean gender;
private int age;
private Address address;
get/set
...
}

自定义编辑器类

public class AddressEditor extends PropertyEditorSupport {

@Override
public String getAsText() {
return super.getAsText();
}

//Spring遇到数据类型不一致并且不能自己处理的时候会调用这个方法处理字符串
@Override
public void setAsText(String text) throws IllegalArgumentException {
String[] str = text.split(",");
String city = str[0];
String street = str[1];
String country = str[2];
Address add = new Address(city, street, country);
setValue(add);
}

}

xml文件:

<!-- 这个配置指明哪个类型对应哪个自定义编辑器 -->
<bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="com.briup.ioc.proEdit.Address" value="com.briup.ioc.proEdit.AddressEditor"/>
</map>
</property>
</bean>

<!-- spring发现address的类型是Address的时候,就会调用对应的属性编辑器处理AddressEditor了 -->
<bean id="student" class="com.briup.ioc.proEdit.Student">
<property name="id" value="1"/>
<property name="name" value="tom"/>
<property name="age" value="45"/>
<property name="gender" value="true"/>
<property name="address">
<value>kunshan,xueyuan,China</value>
</property>
</bean>

原文地址:https://www.cnblogs.com/Magic-Li/p/11723388.html

时间: 2024-11-11 09:17:40

SpringIOC自定义属性编辑器PropertyEditor的相关文章

详解spring自定义属性编辑器

Spring DI注入的时候可以把普通属性注入进来,但是像Date类型的就无法被识别.这时可以通过Spring的属性编辑器把配置文件中的字符串转化成相应的对象进行注入. Spring有自带的属性编辑器,我们也可以写自定义的属性编辑器 自定义属性编辑器: 继承java.beans.PropertyEditorSupport类,重写其中的setAsText(String text)方法. 再把自定义的属性编辑器注入到Spring中. 1. JavaBean类 package com.dxc.zidi

Spring自定义属性编辑器

bean类: [html] view plain copy package com.zm.bean; import java.util.Date; public class Bean1 { private Date dateValue; public Date getDateValue() { return dateValue; } public void setDateValue(Date dateValue) { this.dateValue = dateValue; } } 自定义属性编辑

SpringMVC自定义属性编辑器

自定义springMVC的属性编辑器主要有两种方式,一种是使用@InitBinder标签在运行期注册一个属性编辑器,这种编辑器只在当前Controller里面有效:还有一种是实现自己的 WebBindingInitializer,然后定义一个AnnotationMethodHandlerAdapter的bean,在此bean里面进行注册 ,这种属性编辑器是全局的. 第一种方式: Java代码 import java.beans.PropertyEditorSupport; import java

Spring框架介绍及使用

1.spring简介1.1什么是sping1.2为什么使用spring(sping的好处)1.3 spring体系结构2.核心概念2.1. IOCInversion of Control 控制反转2.2DIdependency injection 依赖注入3.Spring第一个程序4.IOC容器IOC容器的两种类型实例化时机5.数据装配6.bean的生命周期:生命周期的各个阶段:对生命周期进行扩展:7.实例化bean的方式构造方法 有参.无参静态工厂:无参.有参实例工厂:无参.有参(非静态方法)

(spring-第13回【IoC基础篇】)PropertyEditor(属性编辑器)--实例化Bean的第五大利器

上一篇讲到JavaBeans的属性编辑器,编写自己的属性编辑器,需要继承PropertyEditorSupport,编写自己的BeanInfo,需要继承SimpleBeanInfo,然后在BeanInfo中把特定的属性编辑器和需要编辑的属性绑定起来(详情请查看上一篇). Spring的属性编辑器仅负责将配置文件中的字面值转换成Bean属性的对应值.(而JavaBean的属性编辑器能够通过界面来手动设置bean属性的值).如果属性的类型不同,转换的方法就不同.正如javabean的属性编辑器一样,

SpringMVC类型转换器、属性编辑器

对于MVC框架,参数绑定一直觉得是很神奇很方便的一个东西,在参数绑定的过程中利用了属性编辑器.类型转换器 参数绑定流程 参数绑定:把请求中的数据,转化成指定类型的对象,交给处理请求的方法 请求进入到DisptacherServlet,卸下请求中的数据 DisptacherServlet将请求中的数据发送给Controller 获取Controller需要接收的参数类型,将参数类型和请求数据发送给DataBinder DataBinder将参数类型和请求数据再发给TypeConverter,由Ty

属性编辑器,即PropertyEditor--&gt;Spring IoC

在Spring配置文件里,我们往往通过字面值为Bean各种类型的属性提供设置值:不管是double类型还是int类型,在配置文件中都对应字符串类型的字面值.BeanWrapper填充Bean属性时如何将这个字面值转换为对应的double或int等内部类型呢?我们可以隐约地感觉到一定有一个转换器在其中起作用,这个转换器就是属性编辑器. “属性编辑器”这个名字可能会让人误以为是一个带用户界面的输入器,其实属性编辑器不一定非得有用户界面,任何实现java.beans.PropertyEditor接口的

SpringMVC源码阅读:属性编辑器、数据绑定

1.前言 SpringMVC是目前J2EE平台的主流Web框架,不熟悉的园友可以看SpringMVC源码阅读入门,它交代了SpringMVC的基础知识和源码阅读的技巧 本文将通过源码(基于Spring4.3.7)分析,弄清楚SpringMVC如何通过类型转换完成数据绑定和属性编辑器的原理,并自定义属性编辑器 2.源码分析 进入RequestMappingHandlerAdapter,该类支持参数解析和数据返回,进入invokeHandlerMethod方法 794行构造WebDataBinder

Spring-- IOC容器详解(转)

Spring作为一个在java界广泛使用且评价颇高的一个开源框架,给我们提供了好多的功能,极大的方便了我们的开发.此处我介绍IOC容器和AOP概念. IOC(Inversion of Control)控制反转:本来是由应用程序管理的对象之间的依赖关系,现在交给了容器管理,这就叫控制反转,即交给了IOC容器,Spring的IOC容器主要使用DI方式实现的.不需要主动查找,对象的查找.定位和创建全部由容器管理. 通俗点说就是不创建对象.以前我们要调用一个对象的方法,首先要new一个对象.但使用IOC