本文共 2483 字,大约阅读时间需要 8 分钟。
我们在xml定义bean时,输入的内容都是字符串。spring会根据已经注册好的属性编辑器解析这些字符串,实例化成对应的类型。下面演示一个实例,Customer有一个属性Address,在配置这个Bean时,直接配置成“浙江-杭州-西湖”,根据自定的属性编辑器生成Address对象,并打印出“浙江省杭州市西湖区”。
package exa.ydoing.spring;class Address { /* * 区 */ private String district; /* * 市 */ private String city; /* * 省 */ private String province; public String getDistrict() { return district; } public void setDistrict(String district) { this.district = district; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getProvince() { return province; } public void setProvince(String province) { this.province = province; } public String toString() { return this.province + "省" + this.city + "市" + this.district + "区"; }}public class Customer { private String name; private Address address; public String getName() { return name; } public void setName(String name) { this.name = name; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; }}
package exa.ydoing.spring;import java.beans.PropertyEditorSupport;import org.springframework.util.Assert;public class AddressPropertyEditor extends PropertyEditorSupport { public void setAsText(String text) { try { Assert.notNull(text); String[] adds = text.split("-"); Address address = new Address(); address.setProvince(adds[0]); address.setCity(adds[1]); address.setDistrict(adds[2]); this.setValue(address); } catch (Exception e) { e.printStackTrace(); } }}
package exa.ydoing.spring;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class App { public static void main( String[] args ) { ApplicationContext ctx = new ClassPathXmlApplicationContext("ApplicationContext.xml"); Customer c = ctx.getBean("customer", Customer.class); //输出 System.out.println(c.getAddress().toString()); }}
浙江省杭州市西湖区
转载地址:http://dxhrb.baihongyu.com/