• spring 注入一个以枚举类型对象


    1、枚举

      在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的。  

      例如星期一到星期日七个数据元素组成了一周的“数据集”,春夏秋冬四个数据元素组成了四季的“数据集”。

      在java中如何更好的使用这些“数据集”呢?因此枚举便派上了用场,是枚举的一个例子:

    public enum ColorEnum {
    RED, GREEN, YELLOW, BLUE;
    }

    2、在spring中配置注入一个枚举类型对象

    1)、定义枚举类型对象

    package com.zcr.util;
    public enum ColorEnum {
    RED, GREEN, YELLOW, BLUE;
    }

    2)、使用拥有枚举类型的类

    package com.zcr.util
    
    //使用枚举类型  
    public class Car {  
        private ColorEnum colorEnum;  
    }  

    3)、spring 配置文件中加入下面的代码

    //spring配置文件注入  
    <bean id="red" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">    
            <property name="staticField" value="com.zcr.util.ColorEnum.RED" />    
        </bean>  
    <bean id="car" class="com.zcr.util.Car">  
            <property name="colorEnum" ref="red" />  
        </bean>  

    注意

    枚举类型要想注入到类中,一定要先使用org.springframework.beans.factory.config.FieldRetrievingFactoryBean类将枚举类型进行转换,即

    <bean id="red" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">    
            <property name="staticField" value="com.zcr.util.ColorEnum.RED" />    
    </bean>  

    将ColorEnum.RED转换为RED这个bean,然后在要注入的bean中使用<property name="colorEnum" ref="red" />引用即可。

    3)、调用

      在你要注入类的地方加入下面的代码即可将类信息注入。

    @Autowired
    private Car car;

    3、使用java自带的一个Enum(枚举)类型进行注入测试

      java中也存在着很多的枚举类,如java.util.concurrent.TimeUnit,它的类定义如下:

    public enum TimeUnitextends Enum<TimeUnit>

      由上面的定义我们可以看到,它是一个枚举类。现在我要通过spring文件配置它生成的实例。

    在spring配置文件中假如下面的配置:

       <bean id="timeUnit" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
           <property name="staticField" value="java.util.concurrent.TimeUnit.SECONDS" />
       </bean>

    类中调用:

    @Autowired
    private TimeUnit timeUnit;

      这样子该对象就拿到了。

    4、为什么要使用文件配置的方式?

      想java的TimeUnit类,它有多种时间单位,毫秒、秒、分、时、天……,而我们在项目中使用的时候,肯定是统一时间单位的,所以我们可以通过配置文件配置,这样子有利于解耦和,当我们要修改时间单位的时候,我们只需简单的修改我们的配置文件就可以了,(最好还是少改代码)。同时,我们肯定在多个地方用到了TimeUnit这个对象,假如我们配置在配置文件中,就只需要修改一个位置即可完成所有调用的修改,易于项目的修改。

      致谢:感谢您的阅读!

  • 相关阅读:
    使用wps跨ubuntu和windows编辑“.doc”文档。报错“编辑受限”,乱码,软件卡死,强制关闭
    【Python】断言功能Assertion
    【Python】hasattr() getattr() setattr() 使用方法详解
    【python】self & cls
    【Python】2.x与3​​.x版本的选用&版本间的区别
    【python】 del 的用法
    【python】参数中的*args和**kwargs
    解方程AX=b与矩阵分解:奇异值分解 特征值分解 QR分解 三角分解 Cholesky分解
    【python】dist-packages和site-packages的区别
    【python】脚本连续发送QQ邮件
  • 原文地址:https://www.cnblogs.com/0201zcr/p/5082871.html
Copyright © 2020-2023  润新知