Spring核心——字符串到实体转换

笼统的说一个系统主要是由3个部分组成的:

  1. 执行程序:主要负责处理业务逻辑,对接用户操作。
  2. 内部数据:嵌套在源码中的数据,用于指导程序运行。
  3. 外部数据:业务数据,外部配置数据。

内部数据本身就是程序的一部分,在Java中这些数据通常停留在类的静态成员变量中。而外部数据往往与代码无关,所以对于程序而言要“读懂”它们需要进行一些前置处理。例如用户在前端页面提交的数据我们从RequestContext中获取的数据类型都是字符串,而我们的业务需要将字符串转换成数字、列表、对象等等,这就引入了我们接下来要介绍的内容——数据类型转换。

JavaBean对于J2SE或者J2EE而言有着非常重要的意义,ORACLE为了统一各个组织对JavaBean的使用方式制定了详尽的JavaBean规范,包括BeanInfoPropertyEditorPropertyEditorSupport等方面的内容。本文会涉及到JavaBean的一些规范,但是重点是介绍Spring的数据管理。

(可执行代码请到本人gitee库下载,本文的代码在chkui.springcore.example.hybrid.beanmanipulation包)

Properties结构转换为实体

标准资源文件*.properties是Java程序常用的数据存储文件,Spring提供了BeanWrapper接口将*.properties文件中的数据转换成一个标准的JavaBean对象。看下面的例子:

有一个实体类Person:

class Person {
	private String name;
	private int age;
	private boolean license;
	private Date birtday;
	private Address address;
	private Map<String, String> otherInfo;

    // Getter & Setter ......
}

然后可以通过BeanWrapper将Properties对象中的数据设置到对象中:

   private void simpleDataBind() {
		BeanWrapper wrapper = new BeanWrapperImpl(new Person());
		
		//使用 BeanWrapper::setPropertyValue 接口设置数据
		wrapper.setPropertyValue("name", "niubility");
		wrapper.setPropertyValue("age", 18);
		wrapper.setPropertyValue("license", true);
		print(wrapper.getWrappedInstance());

		//使用 Properties对象设置数据,Properties实例可以来源于*.properties文件
		Properties p = new Properties();
		p.setProperty("name", "From Properties");
		p.setProperty("age", "25");
		p.setProperty("license", "false");
		p.setProperty("otherInfo[birthday]", "2000-01-01");
		wrapper.setPropertyValues(p);
		print(wrapper.getWrappedInstance());
	}

这样,使用Spring的BeanWrapper接口,可以快速的将Properties数据结构转换为一个JavaBean实体。

除了配置单个实体的数据,BeanWrapper还可以为嵌套结构的实体设置数据。现在增加一个实体Vehicle:</

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一条柴犬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值