利用属性编辑器完成Spring日期类型的注入
ApplicationContext.xml注入配置如下:
<bean id="bin" class="com.apj.client.Bin">
<property name="strValue" value="FredKing" />
<property name="dateValue" value="2011-01-09" />
</bean>
下面的日期类型注入后读取出现类型转换错误,以下是jUnit的测试类:
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import junit.framework.TestCase;
public class SpringUnitTest extends TestCase {
private BeanFactory factory;
@Override
protected void setUp() throws Exception {
factory = new ClassPathXmlApplicationContext("applicationContext.xml");
super.setUp();
}
public void testSpring(){
System.out.println("bin.strValue:"+((Bin)factory.getBean("bin")).getStrValue());
System.out.println("bin.dateValue:"+((Bin)factory.getBean("bin")).getDateValue());
}
}
下面是Bin类:
import java.util.Date;
public class Bin {
private String strValue;
private Date dateValue;
public String getStrValue() {
return strValue;
}
public void setStrValue(String strValue) {
this.strValue = strValue;
}
public Date getDateValue() {
return dateValue;
}
public void setDateValue(Date dateValue) {
this.dateValue = dateValue;
}
}
需要创建一个属性编辑器类继承PropertyEditorSupport:
import java.beans.PropertyEditorSupport;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class DatePropertyEditer extends PropertyEditorSupport {
private String format = "yyyy-MM-dd";
@Override
public void setAsText(String text) throws IllegalArgumentException {
SimpleDateFormat sdf = new SimpleDateFormat(format);
try {
this.setValue(sdf.parse(text));
} catch (ParseException e) {
e.printStackTrace();
}
}
}
重写setAsText方法,将setValue方法设置格式化后的值。
最后配置一下ApplicationContext.xml如下
<bean id="customDateEditor" class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="java.util.Date">
<bean class="com.apj.client.DatePropertyEditer" />
</entry>
</map>
</property>
</bean>
如果需要把format一并注入,只需修改为以下配置即可:
<bean id="customDateEditor" class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="java.util.Date">
<bean class="com.apj.client.DatePropertyEditer" >
<property name="format" value="yyyy/MM/dd" />
</bean>
</entry>
</map>
</property>
</bean>
同时由于是setter注入,需要在DatePropertyEditer类中加入setFormat方法。
分享到:
相关推荐
在Spring框架中,注入Date类型的变量是一个常见的需求,特别是在处理日期和时间相关的业务逻辑时。这篇博客将探讨如何在Spring中有效地注入Date对象到bean的属性中。首先,我们需要了解Spring依赖注入的基本概念,它...
虽然这里使用的是`<list>`标签,但实际上Spring会自动将其转换为数组类型注入。 4. **Map** 类型注入: ```xml ``` 这里定义了一个键值对映射关系,并将其注入到了`mapValue`属性中。 5. **Date**...
-- 测试Bean --> <bean id="datebean" class="com.springDemo1.Date类型注入.DateBean"> <property name="birthday" value="2015-12-31" /> </bean> </beans> 方式3:使用SpEL表达式注入Date对象...
1. 基本类型注入 对于像`int`和`String`这样的基本类型,Spring可以通过XML配置文件或Java配置类来直接注入。例如,对于Bean11中的intValue和strValue,我们可以在XML配置中这样设置: ```xml , Spring"/> ```...
至于日期和字符串之间的转换,Spring提供了Converter和FormattingConverter接口,我们可以自定义实现这些接口,为Spring提供类型转换服务。例如,创建一个DateToStringConverter和StringToDateConverter,然后在配置...
当Spring容器遇到一个带有`@Autowired`注解的字段或方法时,它会自动寻找类型匹配的bean进行注入。如果存在多个候选bean,可以通过指定`@Qualifier`来精确匹配。 ```java public class UserService { @Autowired ...
此外,"009_Spring属性编辑器.avi"和"011_Spring属性编辑器_日期格式可配置_多文件读取方式.avi"将讲解Spring属性编辑器的用法,如何处理复杂类型的属性注入,如日期格式化和文件操作。 "010_上午内容回顾.avi"是对...
例如,在日期类型绑定中,常见的日期格式“yyyy-MM-dd”可能无法被Spring MVC默认识别。为了处理这种情况,我们可以创建一个自定义的日期转换器,比如`MyDataBinding`类,该类实现了`WebBindingInitializer`接口。在...
Spring框架的核心是依赖注入(Dependency Injection,DI),它允许开发者在运行时通过容器来管理对象及其依赖关系,而不是在代码中硬编码这些依赖。这极大地提高了代码的可测试性和可维护性。在Spring 4.2.0中,这一...
3. 改进的类型安全:在Spring 4.0中,依赖注入(DI)更加类型安全,降低了因配置错误引发的问题。 4. 更强的Groovy支持:Spring 4.0增强了对Groovy的支持,允许在配置中使用Groovy脚本,提高了配置的可读性和可维护...
Spring 内建了一套全面的类型转换器,覆盖了许多常见的类型转换场景,例如日期、数字、枚举等。这些转换器位于 `org.springframework.core.convert.converter` 包下,可以满足大部分应用的转换需求。然而,当遇到...
在Spring 5中,依赖注入得到了进一步优化,支持了更多类型的构造函数注入。 2. ** reactive programming**:Spring 5引入了对Reactive Streams的支持,这是Java 9中的一个新API,用于处理高并发、非阻塞式I/O。...
此外,Spring还提供了格式化功能,支持日期和时间格式化的配置,以及字段的格式化处理。 #### Spring表达式语言-SpEL SpEL是Spring Expression Language的缩写,它是用于在运行时查询和操作对象图的表达式语言。...
1. 改进的类型安全的构造函数注入:Spring4.3引入了更强大的构造函数注入,允许在没有显式注解的情况下实现类型安全的自动装配。 2. `@Conditional`增强:这个注解允许你在特定条件下注册bean,增强了条件化配置的...
2. 更好的类型安全:在4.2.x系列版本中,Spring增强了类型安全的依赖注入,降低了因类型转换错误导致的问题。 3. 对Java 8的支持:Spring 4.2.5全面支持Java 8,包括日期和时间API,函数式编程接口等,让开发者能够...
7. **其他工具类**:除了以上主要组件,Spring Core还包含了大量实用工具类,如IO操作、字符串处理、日期时间操作等,这些都是在开发过程中经常需要用到的。 阅读Spring Core的源码可以帮助我们更深入地理解其工作...
在Spring中,处理日期类型时,我们可能遇到字符串与日期之间的转换问题。有两种主要方法来解决这个问题: a. **自定义类型转换器**:创建一个类继承`PropertyEditorSupport`,并覆盖`setAsText`方法,例如`...
1. 依赖注入:Spring 4.x的依赖注入特性允许开发者声明性地管理对象及其依赖关系,提高了代码的可测试性和可维护性。 2. 模块化:Spring框架由多个模块组成,如Core Container、Data Access/Integration、Web等,...
在4.1.2版本中,这一特性得到了进一步优化,支持更多种类型的注入方式,包括构造函数注入、setter注入和基于注解的注入。 2. **AOP(面向切面编程,Aspect-Oriented Programming)**: Spring的AOP模块允许我们在...