Spring自定义属性编辑器
2015-12-17 22:16
525 查看
概念
我们在xml定义bean时,输入的内容都是字符串。spring会根据已经注册好的属性编辑器解析这些字符串,实例化成对应的类型。下面演示一个实例,Customer有一个属性Address,在配置这个Bean时,直接配置成“浙江-杭州-西湖”,根据自定的属性编辑器生成Address对象,并打印出“浙江省杭州市西湖区”。源码
Bean定义
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(); } } }
Bean的配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"> <bean id="customer" class="exa.ydoing.spring.Customer"> <property name="name" value="Jack" /> <property name="address" value="浙江-杭州-西湖" /> </bean> <bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer"> <property name="customEditors"> <map> <entry key="exa.ydoing.spring.Address"> <bean class="exa.ydoing.spring.AddressPropertyEditor" /> </entry> </map> </property> </bean> </beans>
测试
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()); } }
输出
浙江省杭州市西湖区
相关文章推荐
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- 模拟Spring的简单实现
- spring+html5实现安全传输随机数字密码键盘
- Spring中属性注入详解
- SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
- struts2 spring整合fieldError问题
- spring的jdbctemplate的crud的基类dao
- 读取spring配置文件的方法(spring读取资源文件)
- Spring Bean基本管理实例详解
- java实现简单美女拼图游戏
- 详解Java的Spring框架中的事务管理方式
- 解析Java的Spring框架的BeanPostProcessor发布处理器
- Java开发框架spring实现自定义缓存标签
- java基本教程之线程休眠 java多线程教程
- JSP开发中在spring mvc项目中实现登录账号单浏览器登录
- spring boot实战之内嵌容器tomcat配置
- 浅析Java的Spring框架中IOC容器容器的应用
- 基于Spring框架的Shiro配置方法