11.1 Propert Editor

  • property editor是JavaBeans API的一项特性,用来字符和属性值之间的互相转换(如2014-03-02Date类型的互相转换)
  • 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的更多相关文章

  1. activemq5.11整合spring4.2.3

    前言 这篇博客记录 activemq5.11整合spring4.2.3的过程,免得以后忘记了 1.工程结构 2.pom.xml <project xmlns="http://maven ...

  2. 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 ...

  3. 18点睛Spring4.1-Meta Annotation

    18.1 Meta Annotation 元注解:顾名思义,就是注解的注解 当我们某几个注解要在多个地方重复使用的时候,写起来比较麻烦,定义一个元注解可以包含多个注解的含义,从而简化代码 下面我们用& ...

  4. 04点睛Spring4.1-资源调用

    转发:https://www.iteye.com/blog/wiselyman-2210666 4.1 Resource spring用来调用外部资源数据的方式 支持调用文件或者是网址 在系统中调用p ...

  5. 第15.11节 PyQt(Python+Qt)入门学习:Qt Designer(设计师)组件Property Editor(属性编辑)界面中主窗口QMainWindow类相关属性详解

    概述 主窗口对象是在新建窗口对象时,选择main window类型的模板时创建的窗口对象,如图: 在属性编辑界面中,主窗口对象与QMainWindow相关的属性包括:iconSize.toolButt ...

  6. 14点睛Spring4.1-脚本编程

    转发:https://www.iteye.com/blog/wiselyman-2212678 14.1 Scripting脚本编程 脚本语言和java这类静态的语言的主要区别是:脚本语言无需编译,源 ...

  7. 16点睛Spring4.1-TaskScheduler

    转发:https://www.iteye.com/blog/wiselyman-2213049 16.1 TaskScheduler 提供对计划任务提供支持; 使用@EnableScheduling开 ...

  8. 00点睛Spring4.1-环境搭建

    转载:https://www.iteye.com/blog/wiselyman-2210250 0.1 前置条件 Spring 4.1提倡基于Java Config和注解的配置,所以本教程通篇不会采用 ...

  9. XAF Spreadsheet property Editor

    https://www.devexpress.com/Support/Center/Question/Details/T371232

随机推荐

  1. 浏览器中点击链接,跳转qq添加好友的实现方式

    做android三年了,都不知道到底干了啥,现在好好研究应该来得及,哈哈哈,希望看到文章的人共勉,哈哈哈(新手写文章,大佬轻喷,呜呜呜~) 好了,这篇只是记录下,项目中遇到的坑(MMP测试),哈哈哈, ...

  2. 给各阶段java学习者的建议[转]

    第一部分:零基础或基础薄弱的同学这部分主要适用于尚未做过Java工作的同学,包括一些在校生以及刚准备转行Java的同学.一.Java基础首先去找一个Java的基础教程学一下,这里可以推荐达内java课 ...

  3. C void的指针 强制类型转换(int*)p 把变量指针p强制转换成指向int类型的指针

    #include <stdio.h> int main(void){ void *p; int a = 14322; char c ='A'; p = &a; //p = & ...

  4. luogu 3466 对顶堆

    显然答案是将一段区间全部转化成了其中位数这样的话,需要维护一个数据结构支持查询当前所有数中位数对顶堆 用两个堆将 < 中位数的数放入大根堆将 > 中位数的数放入小根堆这样就会存在删除操作 ...

  5. word 新建一行文字不能左对齐

  6. AtCoder Grand Contest 030 (AGC030) F - Permutation and Minimum 动态规划

    原文链接www.cnblogs.com/zhouzhendong/p/AGC030F.html 草率题解 对于每两个相邻位置,把他们拿出来. 如果这两个相邻位置都有确定的值,那么不管他. 然后把所有的 ...

  7. SpringCloud:搭建微服务项目框架 microservicecloud

    1.搭建整体父工程 microservicecloud 新建父工程microservicecloud,切记是Packageing是pom模式 主要是定义POM文件,将后续各个子模块公用的jar包等统一 ...

  8. [MYSQL手工注入](2)基于布尔的SQL盲注实战

    0x02 MYSQL 手工注入实战--基于布尔的SQL盲注 前言,之前有对MYSQL基于报错的手工注入进行过介绍,但今天的实验环境,并不是基于报错的SQL注入,而是一个基于布尔的SQL盲注测试流程. ...

  9. Scikit-Learn 机器学习笔记 -- 线性回归、逻辑回归、softma

      import numpy as np from matplotlib import pyplot as plt # 创建线性回归数据集 def create_dataset(): X = 2 * ...

  10. 树莓派VNC

    sudo raspi-config Interfacing Options -> VNC 1.停止VNC窗口: vncserver -kill:1 2.修改密码 vncpasswd 3.重启服务 ...