11点睛Spring4.1-Property Editor
11.1 Propert Editor
- property editor是JavaBeans API的一项特性,用来字符和属性值之间的互相转换(如
2014-03-02
和Date
类型的互相转换) - spring内置了CustomDateEditor, CustomNumberEditor, ClassEditor, FileEditor, LocaleEditor, StringArrayPropertyEditor
- 除了内置的property editor,如需自己定制额外的复杂情况继承JavaBeans API的PropertyEditorSupport类
11.2 示例
11.2.1 使用Spring内置的Editor
11.2.1.1 编写演示bean
import java.util.Date; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class DemoBean {
@Value("2014/02/03")
private Date demoDate; public Date getDemoDate() {
return demoDate;
} public void setDemoDate(Date demoDate) {
this.demoDate = demoDate;
} }
11.2.1.2 编写配置
package com.wisely.propertyeditor; import java.text.SimpleDateFormat; import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; @Configuration
public class DemoConfig {
@Bean
public CustomDateEditor dateEditor(){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
return new CustomDateEditor(dateFormat, true);
}
}
11.2.1.3 测试
package com.wisely.propertyeditor; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class Main {
public static void main(String[] args) {
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext("com.wisely.propertyeditor");
DemoBean demoBean = context.getBean(DemoBean.class);
System.out.println(demoBean.getDemoDate());
context.close();
}
}
输出结果
Mon Feb 03 00:00:00 CST 2014
11.2.2 使用PropertyEditorSupport
11.2.2.1 编写需要和字符转换的javabean
此为传值对象,不需要声明称spring的bean
package com.wisely.propertyeditor; public class DemoBean2 {
private String name;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
} }
11.2.2.2 在DemoBean中注入该bean
package com.wisely.propertyeditor; import java.util.Date; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class DemoBean { @Value("汪云飞-合肥")
private DemoBean2 demoBean2; public DemoBean2 getDemoBean2() {
return demoBean2;
} public void setDemoBean2(DemoBean2 demoBean2) {
this.demoBean2 = demoBean2;
} }
11.2.2.3 实现自定义的Property Editor
package com.wisely.propertyeditor; import java.beans.PropertyEditorSupport; public class DemoPropertyEditor extends PropertyEditorSupport{ @Override
public String getAsText() {
DemoBean2 bean2 =(DemoBean2) getValue();
return bean2.getClass().getName() + "," + bean2.getName()
+ "," + bean2.getAddress();
} @Override
public void setAsText(String text) throws IllegalArgumentException {
String[] parts = text.split("-");
try{
DemoBean2 bean2 = new DemoBean2();
bean2.setName(parts[0]);
bean2.setAddress(parts[1]);
setValue(bean2);
}catch(Exception e){
throw new IllegalArgumentException(e);
} } }
11.2.2.4 配置editorConfigurer
package com.wisely.propertyeditor; import java.beans.PropertyEditor;
import java.util.HashMap;
import java.util.Map; import org.springframework.beans.factory.config.CustomEditorConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; @Configuration
public class Demo2Config {
@Bean
public CustomEditorConfigurer editorConfigurer(){
CustomEditorConfigurer editorConfigurer = new CustomEditorConfigurer();
Map<Class<?>, Class<? extends PropertyEditor>> customEditors =
new HashMap<Class<?>, Class<? extends PropertyEditor>>();
customEditors.put(DemoBean2.class, DemoPropertyEditor.class);
editorConfigurer.setCustomEditors(customEditors);
return editorConfigurer;
} }
11.2.2.5 测试
package com.wisely.propertyeditor; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class Main { public static void main(String[] args) {
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext("com.wisely.propertyeditor");
DemoBean demoBean = context.getBean(DemoBean.class);
System.out.println(demoBean.getDemoBean2().getName()+"///"
+demoBean.getDemoBean2().getAddress());
context.close();
}
}
输出结果
汪云飞///合肥
11点睛Spring4.1-Property Editor的更多相关文章
- activemq5.11整合spring4.2.3
前言 这篇博客记录 activemq5.11整合spring4.2.3的过程,免得以后忘记了 1.工程结构 2.pom.xml <project xmlns="http://maven ...
- How to use umbraco datetime property editor
When I was using Umbraco datetime property editor, I met with a problem that the editor must be firs ...
- 18点睛Spring4.1-Meta Annotation
18.1 Meta Annotation 元注解:顾名思义,就是注解的注解 当我们某几个注解要在多个地方重复使用的时候,写起来比较麻烦,定义一个元注解可以包含多个注解的含义,从而简化代码 下面我们用& ...
- 04点睛Spring4.1-资源调用
转发:https://www.iteye.com/blog/wiselyman-2210666 4.1 Resource spring用来调用外部资源数据的方式 支持调用文件或者是网址 在系统中调用p ...
- 第15.11节 PyQt(Python+Qt)入门学习:Qt Designer(设计师)组件Property Editor(属性编辑)界面中主窗口QMainWindow类相关属性详解
概述 主窗口对象是在新建窗口对象时,选择main window类型的模板时创建的窗口对象,如图: 在属性编辑界面中,主窗口对象与QMainWindow相关的属性包括:iconSize.toolButt ...
- 14点睛Spring4.1-脚本编程
转发:https://www.iteye.com/blog/wiselyman-2212678 14.1 Scripting脚本编程 脚本语言和java这类静态的语言的主要区别是:脚本语言无需编译,源 ...
- 16点睛Spring4.1-TaskScheduler
转发:https://www.iteye.com/blog/wiselyman-2213049 16.1 TaskScheduler 提供对计划任务提供支持; 使用@EnableScheduling开 ...
- 00点睛Spring4.1-环境搭建
转载:https://www.iteye.com/blog/wiselyman-2210250 0.1 前置条件 Spring 4.1提倡基于Java Config和注解的配置,所以本教程通篇不会采用 ...
- XAF Spreadsheet property Editor
https://www.devexpress.com/Support/Center/Question/Details/T371232
随机推荐
- dp--01背包,完全背包,多重背包
背包问题 以下代码 n是物品个数,m是背包容积 物品价值和重量int v[maxn],w[maxn]; 01背包 模板 for(int i = 0; i < n; i++) { for(int ...
- OSS先后上传相同地址的图片
如果上传先后两张图片那么后面的图片会替换前面的图片
- Kafka 幂等生产者和事务生产者特性(讨论基于 kafka-python | confluent-kafka 客户端)
Kafka 提供了一个消息交付可靠性保障以及精确处理一次语义的实现.通常来说消息队列都提供多种消息语义保证 最多一次 (at most once): 消息可能会丢失,但绝不会被重复发送. 至少一次 ( ...
- 64位内核开发第四讲,查看SSDT表与showSSDT表
目录 SSDt表与ShadowSSDT表的查看. 一丶SSDT表 1.什么是SSDT表 2.查看步骤 二丶ShadowSSDT表 1.什么是ShadowSSDT表 2.如何查看. 三丶工具介绍 SSD ...
- CF1188B/E Count Pairs(数学)
数同余的个数显然是要把\(i,j\)分别放到\(\equiv\)的两边 $ (a_i + a_j)(a_i^2 + a_j^2) \equiv k \bmod p $ 左右两边乘上\((a_i-a_j ...
- IIS7 伪静态 web.config 配置方法【详解】
IIS7 做伪静态比较的简单方便 1.程序方面 只需要设置web.config 就可以了. 2.服务器需要安装:URL Rewrite 下载地址:http://www.iis.net/download ...
- git 的使用方法以及要注意的地方~
1.假如你在一个分支,非master分支,例如avatar,在你修改之前一定要 get merge master,git pull,再开始写代码.如果改好了,也要先git merge master,g ...
- BAT文件语法和技巧(bat文件的编写及使用)
比较有用的东西 首先,批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(no ...
- 绕流振动UDF【转载】
宏DEFINE_GRID_MOTION用来移动任意边界和流体区域内的网格节点.它提供了对节点和网格最大限度的操作,可以将刚体运动.变形和相对运动等结合起来.但是使用此UDF时,每一个时间步都必须执行. ...
- [转载] 浏览器Browser对同域名下的请求并发数量
原文链接:https://blog.csdn.net/a562550212/article/details/79552713 另附原文作者贴的一个知乎地址,几个答主讲的非常好 https://www ...