`

Spring MVC自动为对象注入枚举数据

阅读更多
一、实现转换工厂,定义转换实现,如下:
 
 
package com.mafwo;

import org.springframework.core.convert.converter.Converter;
import org.springframework.core.convert.converter.ConverterFactory;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class OrdinalToEnumConverterFactory implements ConverterFactory<String, Enum<?>> {

@Override
public <T extends Enum<?>> Converter<String, T> getConverter(Class<T> targetType) {
return new OrdinalToEnum<T>(targetType);
}

private class OrdinalToEnum<T extends Enum<?>> implements Converter<String, T> {

private final Class<T> enumType;

public OrdinalToEnum(Class<T> enumType) {
this.enumType = enumType;
}

@Override
public T convert(String source) {
// 转换成数字
int ordinal = Integer.valueOf(source);
if(ordinal == Integer.MIN_VALUE) {
return null;
}
Object temp = null;
try {
Method getCode = enumType.getMethod("getCode");

Object[] objects = enumType.getEnumConstants();
for(Object ob: objects){
Integer temps = (Integer) getCode.invoke(ob);
if(temps == ordinal)
{
temp = ob;
break;
}

}

} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return (T) temp;
}

}
}
二、在spring配置文件中配置:
<!--注意在配置转换鼓舞之后需要在 注解驱动处声明-->
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>

<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<!-- 自动将枚举类型的序列号解析称枚举类型 -->
<bean class="com.mafwo.OrdinalToEnumConverterFactory" />
</set>
</property>
</bean>
之后就可以使用注解方式自动注入枚举类型数据。
分享到:
评论

相关推荐

    详解Spring MVC自动为对象注入枚举类型

    Spring MVC 自动为对象注入枚举类型 在 Spring MVC 框架中,为对象自动注入枚举类型是一项非常有用的功能。然而,默认情况下,Spring MVC 只能自动转换基本数据类型,枚举类型需要特殊处理。在本篇文章中,我们将...

    zrpower7.0(Easyui-B2019-10-20-872588) java管理系统开源框架,spring mvc 搭建后台管理系统

    ZRPower7.0是一款基于Spring MVC架构的高效、灵活的Java管理系统开源框架,它整合了Easyui这一前端框架,为开发者提供了便捷的后台搭建方案。这个系统旨在简化企业级应用的开发流程,提高开发效率,同时也为开发者...

    springdata整合sprig+springmvc+maven分模块化搭建项目

    Spring Data是Spring生态系统的一部分,它提供了与数据存储交互的简便方法,而Spring和Spring MVC则分别作为基础服务管理和Web层的控制层框架。下面我们将详细讲解每个组件的作用以及它们之间的集成过程。 1. **...

    精通spring2.0源代码

    1. **依赖注入(Dependency Injection,DI)**:Spring的核心功能之一,通过DI,对象之间的依赖关系不再硬编码在类内部,而是通过配置文件或注解来管理。这样可以降低类之间的耦合度,提高代码的可测试性和可维护性...

    spring_FrameWork3.0

    - **为Java 5 更新的API:** Spring Framework 3.0 对 Java 5 提供了更好的支持,包括使用泛型和枚举等功能。 - **Spring 表达式语言(SPEL):** SPEL 是一种强大的表达式语言,可以在运行时查询和操作对象图。 - *...

    spring2.5中文数据手册

    根据提供的信息,“spring2.5中文数据手册”主要聚焦于Spring框架2.5版本的相关内容。Spring框架是一个广泛使用的Java平台应用开发框架,它提供了一种简单的方式来构建复杂的应用程序。接下来,我们将从以下几个方面...

    Spring参考文档,内容全面。

    - **依赖注入**:Spring容器会自动将Bean的依赖项注入到Bean中,可以通过构造器注入或setter注入的方式实现。 通过上述知识点的详细介绍,我们对Spring框架的核心概念有了较为深入的理解。无论是初学者还是有一定...

    Spring Framework总览(Overview).pdf

    数据绑定允许将用户界面数据自动绑定到业务对象。类型转换系统确保不同类型的对象可以顺畅交互。SpEL提供了一种强大且灵活的表达式语言,用于在运行时查询和操作对象。最后,AOP允许开发者定义“切面”,在程序的...

    Spring1.x 和Spring2.x 版本上使用有什么区别

    Spring2.x的Bean容器有所增强,支持基于ClassPath的自动扫描,可以自动发现和注册带有特定注解的类,减少了XML配置的工作量。 9. **性能优化** Spring2.x在性能方面做了很多优化,如使用缓存来减少重复的bean创建...

    01.Spring框架简介_spring_spring发展历程_

    3. **Web**:提供了Spring MVC和Spring WebFlux两种Web应用框架。 4. **AOP**:支持面向切面编程,用于实现横切关注点,如日志、事务管理等。 5. **Instrumentation**:用于类加载器和应用服务器特定的工具。 6. **...

    Spring2.5-Reference_zh_CN.txt

    依赖注入(Inversion of Control, IoC)是Spring框架的核心特性之一,它通过将对象间的依赖关系交由外部容器管理来实现松耦合。在Spring2.5中,IoC容器支持通过XML配置文件或注解的方式定义和管理Bean之间的依赖关系...

    spring2.5-中文API

    而注解配置则是Spring 2.5版本之后逐渐流行起来的一种方式,通过在类或方法上添加特定的注解来实现自动装配等功能;基于Java的配置则是在Spring 3.0版本之后引入的新特性,允许开发者使用纯Java代码来替代XML配置...

    使用 Spring 3 来创建 RESTful Web Services

    - 结合 `ModelAndView` 或直接返回对象,Spring MVC 将自动处理视图渲染或 JSON 反序列化。 5. **HTTP 响应状态码和头信息** - 通过 `ResponseEntity` 类设置自定义的 HTTP 状态码和头信息。 - 使用 `...

    spring-framework-reference.pdf

    通过这种方式,对象不再负责创建它们自己的依赖对象,而是通过配置文件或注解来声明这些依赖,这些依赖由Spring容器自动注入。 ##### 1.2 模块划分 Spring框架被划分为多个模块,每个模块提供了特定的功能: - **...

    spring-framework-2.1-m1

    总的来说,Spring Framework 2.1-m1 是一个重要的版本,它在依赖注入、AOP、Web开发、数据访问和性能优化等方面都有所提升,为Java开发者提供了更强大、更灵活的工具。如果你正在使用或打算学习Spring框架,这个版本...

    Spring in Action 3rd

    - **依赖注入(DI)**:Spring框架的核心特性之一,用于实现IoC(Inversion of Control,控制反转),通过外部容器来管理对象及其依赖关系,从而降低了组件之间的耦合度。 #### 二、Spring MVC - **Spring MVC概述*...

    公司代码javaspring

    这些源代码可能是按照Spring框架的组织结构来编写的,例如,控制器(Controllers)、服务(Services)、模型(Models)、视图(Views)以及数据访问对象(Data Access Objects,DAOs)。 进一步分析,Spring框架中...

    spring-reference.pdf

    - **Autowiring collaborators**: 自动装配协作对象,简化了配置。 - **Checking for dependencies**: 检查Bean是否存在未满足的依赖。 - **Method Injection**: 方法级别的依赖注入。 **3.4 Bean的作用域** - **...

    spring的有关学习知识总结

    Spring框架是Java开发中广泛应用的一个轻量级框架,它提供了多种功能来简化应用程序的构建和管理。Spring的核心特性包括依赖注入(Dependency ...从IoC和AOP到MVC和数据访问,Spring为开发者提供了强大而灵活的工具集。

    Spring 2系列参考文档

    Spring框架是Java平台上一个开源的应用框架,其核心特性包括依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP),旨在简化企业级应用的开发。Spring 2系列版本在原有的基础上...

Global site tag (gtag.js) - Google Analytics