今天看了一下spring的Data Binding,觉得挺强大,记录一下,以免忘记。
public class User{
private String name;
private Son son;
public Son getSon() {
return son;
}
public void setSon(Son son) {
this.son = son;
}
}
public class Son{
private String name;
public Son(){}
public Son(String name) {
this.name = name;
}
}
<bean id="user" class="com.lhacker.domain.User">
<property name="name" value="Dylan" />
<property name="son" value="Dylan的儿子"/>
</bean>
不需要配置son的bean,只需要以上的一个配置,spring就会初始化Son,并把“Dylan的儿子"根据Son的有参构造函数,把值绑定在name属性中。
还可以定义自己的TypeEditor,继承java提供的PropertyEditorSuppor.
public class ExoticTypeEditor extends PropertyEditorSupport {
@Override
public void setAsText(String text) throws IllegalArgumentException {
setValue(new Son(text.toUpperCase()));
}
}
<bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors"> <map> <entry key="com.lhacker.domain.Son"
value="com.lhacker.controller.util.ExoticTypeEditor" /> </map> </property>
</bean>
这样,就可以将Son的name属性值绑定为"DYLAN的儿子"。
还有另一种方式
public class CustomPropertyEditorRegistrar implements PropertyEditorRegistrar {
@Override
public void registerCustomEditors(PropertyEditorRegistry registry) {
registry.registerCustomEditor(Son.class, new ExoticTypeEditor());
}
}
<bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="propertyEditorRegistrars">
<list>
<ref bean="customPropertyEditorRegistrar" />
</list>
</property>
</bean>
<bean id="customPropertyEditorRegistrar" class="com.lhacker.controller.util.CustomPropertyEditorRegistrar" />
分享到:
相关推荐
- `ConversionService`:Spring 3.0引入了`ConversionService`,这是一个更强大的类型转换系统,它可以取代简单的`PropertyEditor`,支持更多的转换规则和类型安全的转换。 5. **PropertyEditor与国际化** - 在...
4. **PropertyEditor**:Spring利用PropertyEditor来处理bean属性的类型转换,例如将字符串转换为日期或其他复杂类型。 5. **BeanPostProcessor**:这是一个接口,允许用户自定义bean实例化和初始化过程中的行为,...
2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的...
Spring框架是Java开发中的核心组件,它为构建可维护、可扩展的应用程序提供了强大的支持。Spring 3.0是该框架的一个重要版本,引入了许多新特性和改进,以适应不断发展的企业级应用需求。本篇将详细介绍Spring 3.0...
- **Spring 表达式语言(SPEL):** SPEL 是一种强大的表达式语言,可以在运行时查询和操作对象图。 - **控制反转容器的增强:** Spring 3.0 对容器进行了改进,提供了更丰富的配置选项。 - **通用的类型转换和数据...
- **企业级应用开发**:Spring 为复杂的业务逻辑提供了简单而强大的支持,如事务管理、消息队列集成等。 - **Web开发**:Spring MVC 模块提供了构建 Web 应用的强大支持。 - **移动应用开发**:虽然主要应用于后端...
总的来说,Spring MVC的Data Binding和Validation是处理用户输入的强大工具,`Validator`提供了自定义验证逻辑的途径,而`PropertyEditor`、`Converter`和`Formatter`则帮助我们处理类型转换问题。了解并熟练运用...
在Spring框架中,属性编辑器(PropertyEditor)是一种强大的工具,允许我们自定义类型转换过程。当我们需要将字符串形式的数据转换为Java对象时,属性编辑器就发挥了关键作用。例如,从请求参数或配置文件中读取的...
在上述内容中,提到了Spring内建的多种`PropertyEditor`,例如`ByteArrayPropertyEditor`用于`String`到`byte[]`的转换,`ClassEditor`用于`String`到`Class`的转换,以及`CustomBooleanEditor`用于处理`String`到`...
实作 Validator 使用 PropertyEditor 档案上传 <br> <br>View层方案、Web框架整合 当使用JSP作为View层技术时,您可以结合JSTL以及Spring提供的标签,而除了JSP技术作为View层之外,Spring还...
在Java企业级开发中,Spring框架以其卓越的灵活性、模块化和强大的功能深受开发者喜爱。本资料包包含了Spring 2.0的学习文档和API文档,旨在帮助开发者快速掌握Spring的核心概念和实际应用。 一、Spring 2.0学习...
Spring允许你通过注册自定义的`PropertyEditor`来处理自定义类型的数据绑定。这可以通过实现`PropertyEditorSupport`类并使用`@InitBinder`注解在Controller中注册。 ```java @Controller public class ...
总的来说,Spring框架提供了强大的bean管理和服务,而Spring Boot则进一步提高了开发效率,让开发者更专注于业务逻辑。理解并熟练运用这些概念和工具,对于进行高效、健壮的Java应用开发至关重要。在实际应用中,...
5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP) 6.1. 简介 6.1.1. AOP概念 6.1.2. Spring AOP的功能和目标 6.1.3. Spring的AOP代理 6.2. @AspectJ支持 6.2.1. 启用@AspectJ支持 ...
Spring MVC 是一个强大的Java Web开发框架,用于构建高效、可维护的Web应用程序。在Spring MVC中,数据绑定是一项核心功能,它允许开发者将用户输入的数据与控制器中的对象属性进行关联,简化了数据处理的复杂性。...
2. 当需要处理复杂转换时,考虑使用`Converter`或`ConverterFactory`,它们在Spring 3.0之后被引入,提供了更强大的转换能力。 3. 为了代码的可读性和可维护性,确保在应用中正确注册和使用属性编辑器,避免过度依赖...
Spring提供了强大的数据绑定功能,这主要依赖于其对`PropertyEditor`的支持。 在Spring中,`PropertyEditor`是用于转换不同数据类型的关键组件。`PropertyEditor`接口是Java Bean规范的一部分,Spring扩展了这一...
5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP) 6.1. 简介 6.1.1. AOP概念 6.1.2. Spring AOP的功能和目标 6.1.3. AOP代理 6.2. @AspectJ支持 6.2.1. 启用@AspectJ支持 6.2.2. 声明...