Spring自定义属性编辑器及原理解释.md
2024-10-06 10:14:44
bean的自动装配解释
之前有构造注入和设值注入,但是也是手动的
autowire =”byname”
- 这里要注意自动装配的话,不能装配特殊类型,比如日期类型(要用自定义属性编辑器)
手动解决方式
我们知道的普通是这样解决的:
<bean id="myBean" class="com.bean.myBean">
<property name="date" ref="date"/>
</bean>
<bean id="date" class="java.util.Date">
</bean>
自动注入解决方式
但是要自动注入要用自定义属性编辑器
原理:类似于拦截器,当遇到map中需要过滤的类型时,就按照所配置的属性编辑器处理注入的值,这个值的类型是String类型的,由属性编辑器来决定转换类型。
<!--自定义属性编辑 -->
<bean class="org.springframework.beans.factory.config.CustomEditorConfigurer"> <!--配置一个自定义编辑器-->
<property name="customEditors">
<map>
<entry key="java.util.Date">
<bean class="com.bean.DateTest">
<property name="date" value="yyyy-mm-dd" /> <!--注入需要转换的格式,注入到DateTest 中-->
</bean>
</entry>
</map>
</property>
</bean>
<bean id="md" class="com.bean.myBean">
<property name="date">
<value>2011-1-1</value>
</property>
</bean>
package com.bean;
import java.beans.PropertyEditorSupport;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class DateTest extends PropertyEditorSupport{
private String date;//表示格式,是自动注入的
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
@Override
public void setAsText(String text) throws IllegalArgumentException {
System.out.println("text:"+text);
SimpleDateFormat sdf = new SimpleDateFormat(date);
Date date = null;
try {
date = sdf.parse(text);//传的是字符串,解析为Date数据
this.setValue(date);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
最新文章
- Android Studio使用时源码到处报红色警告,运行时又没错
- 用浏览器(支持WebSocket)和node-inspector 调试后端(CoffeeScript,Typescript)代码
- Java 枚举类
- DF与EF的区别
- AJAX 小实例(转摘)
- 简单的mvc之三:灵活的路由(上)
- Python/MySQL(一、基础)
- python 要掌握面向对象,你得会做这些题吗?
- Daily record-December
- 20175213《Java程序设计》实验二Java面向对象程序设计实验报告
- [转]WINDOWS服务器安全加固实战(WINDOWS SERVER 2008 R2和WINDOWS SERVER 2012)
- 【Redis】Redis的常规操作命令
- vortex
- Linux内核设计第七周学习总结 Linux内核如何装载和启动一个可执行程序
- 【mysql】mysql front 提示Access violation at address 010C9CD0 in module ‘mysql-front.exe’
- 【原】[UIImage imageWithContentsOfFile:]引发的图片无法显示的问题
- PHP 中提示undefined index如何解决(多种方法)
- Codeforces 576D. Flights for Regular Customers(倍增floyd+bitset)
- SICP第三章题解
- 一步一步部署WPF浏览器应用程序