博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring自定义属性编辑器
阅读量:2491 次
发布时间:2019-05-11

本文共 2483 字,大约阅读时间需要 8 分钟。

概念

我们在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的配置

测试

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/

你可能感兴趣的文章
git add . git add -u git add -A区别
查看>>
apache下虚拟域名配置
查看>>
session和cookie区别与联系
查看>>
PHP 实现笛卡尔积
查看>>
Laravel中的$loop
查看>>
CentOS7 重置root密码
查看>>
Centos安装Python3
查看>>
PHP批量插入
查看>>
laravel连接sql server 2008
查看>>
Laravel 操作redis的各种数据类型
查看>>
Laravel框架学习笔记之任务调度(定时任务)
查看>>
laravel 定时任务秒级执行
查看>>
浅析 Laravel 官方文档推荐的 Nginx 配置
查看>>
Swagger在Laravel项目中的使用
查看>>
Laravel 的生命周期
查看>>
CentOS Docker 安装
查看>>
Nginx
查看>>
Navicat远程连接云主机数据库
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>
Mysql出现Table 'performance_schema.session_status' doesn't exist
查看>>