星空网 > 软件开发 > Java

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)、调用

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

@Autowiredprivate 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>

类中调用:

@Autowiredprivate TimeUnit timeUnit;

  这样子该对象就拿到了。

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

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

  致谢:感谢您的阅读!




原标题:spring 注入一个以枚举类型对象

关键词:Spring

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

大连阳喜国际货运:https://www.goluckyvip.com/tag/102343.html
dpd国际物流查询:https://www.goluckyvip.com/tag/102344.html
国际快运查询:https://www.goluckyvip.com/tag/102345.html
大连 国际快递:https://www.goluckyvip.com/tag/102346.html
国际件用什么快递:https://www.goluckyvip.com/tag/102347.html
北方国际物流园:https://www.goluckyvip.com/tag/102348.html
长治婚庆女司仪和主持人:https://www.vstour.cn/a/366176.html
北京丰台区水上乐园哪家好玩?:https://www.vstour.cn/a/366177.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流