Spring IOC 自定义属性编辑器PropertyEditor
来源:互联网 发布:sql sp password 编辑:程序博客网 时间:2024/05/23 01:57
Spring中我们可以使用属性编辑器来将特定的字符串转换为对象 :String-->object
java.beans.PropertyEditor(JDK中的接口)用于将xml文件中字符串转换为特定的类型
同时JDK为我们提供一个实现类java.beans.PropertyEditorSupport
Spring在注入时,如果遇到类型不一致(例如需要Address类型但是用户传了个String)则会去调用相应的属性编辑器进行转换.
Spring会调用属性编辑器的setAsText(String str)进行处理用户传的字符串,并调用getValue()方法获取处理后得到的对象,所以我们在代码中处理完后记得调用setValue方法,要不然spring调用getValue方法拿不到你处理后的对象
自定义属性编辑器示例:
注意:spring中的CustomEditorConfigurer类的使用,在htmlsingle中直接搜索类名即可
自定义编辑器类AddressEditor:
public class AddressEditor extends PropertyEditorSupport{//Spring遇到数据类型不一致并且不能自己处理的时候会调用这个方法处理字符串@Overridepublic 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);//最后这一步一定要写--》return add;setValue(add);}}Address类--表示地址的Bean类
public class Address {private String city;private String street;private String country;public Address(){}public Address(String city, String street, String country) {this.city = city;this.street = street;this.country = country;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}public String getStreet() {return street;}public void setStreet(String street) {this.street = street;}public String getCountry() {return country;}public void setCountry(String country) {this.country = country;}public String toString(){return "city="+city+" street="+street+" country="+country;}}Student类:
public class Student {private long id;private String name;private boolean gender;private int age;private Address address;public Address getAddress() {return address;}public void setAddress(Address address) {this.address = address;}public long getId() {return id;}public void setId(long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public boolean isGender() {return gender;}public void setGender(boolean gender) {this.gender = gender;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String toString(){return "id="+id+" name="+name+" gender="+gender+" age="+age+" address:"+address;}}
这个类有Address对象作为属性~这代表每个人都有一个地址~
配置文件plugin.xml:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:util="http://www.springframework.org/schema/util"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-3.2.xsd"> <!-- 这个配置指明哪个类型对应哪个自定义编辑器 --><bean class="org.springframework.beans.factory.config.CustomEditorConfigurer"><property name="customEditors"><map> <entry key="com.x.spring.test3.proEdit.Address" value="com.x.spring.test3.proEdit.AddressEditor"/> </map></property></bean></beans>proEdit.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-3.2.xsd"><!-- spring发现address的值不能注入的时候(类型不对),就会调用对应的属性编辑器处理了 --><bean id="student" class="com.x.spring.test3.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.rd,China</value></property></bean></beans>测试类:
public class EditTest {public static void main(String[] args) {//自定义属性编辑器 PropertyEditortry {String[] path = {"com/x/spring/test3/proEdit/plugin.xml","com/x/spring/test3/proEdit/proEdit.xml"};ApplicationContext container = new ClassPathXmlApplicationContext(path);Student s = (Student)container.getBean("student");System.out.println(s);} catch (Exception e) {e.printStackTrace();}}}运行效果:
可能理解困难,多看几遍就好了~
0 0
- Spring IOC 自定义属性编辑器PropertyEditor
- 属性编辑器PropertyEditor-->Spring IoC
- Spring源代码分析(5)---propertyEditor(移花接木的自定义属性编辑器)
- Spring的自定义PropertyEditor
- spring配置自定义的PropertyEditor
- java 框架基础知识(3)----PropertyEditor-->Spring IoC
- Spring自定义属性编辑器
- Spring自定义属性编辑器
- spring自定义属性编辑器
- Spring自定义属性编辑器
- Spring-----自定义属性编辑器
- 深入理解JavaBean(2):属性编辑器PropertyEditor
- 详解spring自定义属性编辑器
- Spring自定义属性编辑器PropertyEditorSupport + 使用CustomEditorConfigurer注册属性编辑器
- Spring自定义属性编辑器CustomEfitorConfigurer使用实例
- Spring整理3 -- 自定义属性编辑器
- spring自定义属性编辑器的配置
- spring中自定义属性编辑器CustomEditorConfigurer
- STM32时钟配置方法详解
- Java程序的编译运行
- Could not get lock /var/lib/dpkg/lock - open 解决方法
- 通天塔导游:各种编程语言的优缺点
- 使用JAXB实现JAVA对象和XML字符串的互相转换
- Spring IOC 自定义属性编辑器PropertyEditor
- Java求字符串中出现次数最多的字符
- TCP 状态转移机
- python学习——collections
- 共享文件之共享权限和ntfs权限
- Common Tangents【第六届福建省大学生程序设计竞赛-重现赛】
- oracle创建表空间以及用户角色Demo
- 2016-7-17
- viewpager的setOffscreenPageLimit方法