zoukankan      html  css  js  c++  java
  • 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>
    

      

    之后就可以使用注解方式自动注入枚举类型数据。

     

  • 相关阅读:
    创建大顶堆
    大顶堆的实现
    二叉树的前序,中序,后序,层序实现
    链表实现多项式相加
    225. Implement Stack using Queues
    232. Implement Queue using Stacks
    JavaScript 实现队列操作
    Vue 路由守卫
    回文数 & {}[]() 符号判断

  • 原文地址:https://www.cnblogs.com/xiuluo--angel/p/7097013.html
Copyright © 2011-2022 走看看