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这个对象,假如我们配置在配置文件中,就只需要修改一个位置即可完成所有调用的修改,易于项目的修改。

  致谢:感谢您的阅读!

spring 注入一个以枚举类型对象的更多相关文章

  1. Spring学习(八)-----Spring注入值到集合类型的例子

    下面例子向您展示Spring如何注入值到集合类型(List, Set, Map, and Properties). 支持4个主要的集合类型: List – <list/> Set – &l ...

  2. JavaScript一个简易枚举类型实现扑克牌

    <script type="text/javascript"> /** * 这个函数创建一个新的枚举类型,实参对象表示类的每个实例的名字和值 * 返回值是一个构造函数, ...

  3. 测者的测试技术手册:Junit单元测试遇见的一个枚举类型的坑(枚举类型详解)

    Enum的简介 枚举类型很早就在计算机语言中存在了,主要被用来将一组相似的值包含进一种类型中,这种类型的名称被定义成独一无二的类型描述符,这就是枚举类型. 在java语言中,枚举类型是一个完整功能的类 ...

  4. Java中怎样由枚举常量的ordinal值获得枚举常量对象

    Java1.5提供了关键字enum,能够通过该关键字方便得定义自己须要的枚举类型,比方 enum Season { SPRING, SUMMER, AUTUMN, WINTER } 就定义了一个季节枚 ...

  5. C#语言基础——结构体和枚举类型

    结构体和枚举类型 一.结构体(struct) 结构类型是用户自己定义的一种类型,它是由其他类型组合而成的,可包含构造函数.常数.字段.方法.属性.索引器.运算符.事件和嵌套类型的值类型.结构在几个重要 ...

  6. C#的枚举数(Enumerator)和可枚举类型(Enumerable)

    数组可以被foreach语句遍历数组中的元素,原因是数组可以按需提供一个叫做枚举数(enumerator)的对象.枚举数可以依次返回请求的数组的元素. 对于有枚举数的类型而言,必须有一个方法来获取它们 ...

  7. 自定义枚举类型的常用操作-附源码(xjl456852原创)

    自定义枚举类型中,假如我们有name和desc这样的属性,并在这个基础上定义了多个对象. 那么就可能用到通过name获取desc,或者通过desc获取name.通过name或者desc获取对应的枚举对 ...

  8. Java中的枚举类型详解

    枚举类型介绍 枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中.而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常量的定义 ...

  9. Java枚举类型的用法

    JDK1.5引入了新的类型——枚举.在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便. 1.用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fia ...

随机推荐

  1. Myeclipse10下载,安装,破解,插件,优化介绍

    一.Myeclipse10下载与破解 Genuitec 公司发布了MyEclipse 10,一款Genuitec旗下的商业化Eclipse集成开发工具的升级版本.MyEclipse 10基于Eclip ...

  2. Exception loading sessions from persistent storage

    严重: Exception loading sessions from persistent storage java.io.EOFException 删除Tomcat里面的work/Catalina ...

  3. Intro.js 网站演示

    Intro.js 为您的网站和项目提供一步一步的.更好的介绍 使用简单 引入 js 和 css,然后在代码中加入步骤和介绍. 快速小巧 7 KB 的 JavaScript 和 3 KB CSS,就是全 ...

  4. JSON.stringify()、JSON.parse()和eval(string)

    1.JSON.stringify()用于从一个对象解析出字符串,eg: var obj = {"name":"奔跑的蜗牛","age":&q ...

  5. transform:rotate在手机上显示有锯齿的解决方案大全

    先来个兼容性说明,洗洗脑: div{transform:rotate(7deg);-ms-transform:rotate(7deg); /* IE 9 */-moz-transform:rotate ...

  6. 从0开始学angularjs-笔记02

    上一节课主要跟大家讲解了angularjs的几种特性和看了一个简单的双向绑定的例子.最近都没有时间写博客了....忙成狗呀...今天周末,在写一篇吧~~ 今天主要跟大家详细讲解一下angularjs的 ...

  7. Windows下安装scikit-learn

    Windows下安装scikit-learn 准备工作 Python (>= 2.6 or >= 3.3), Numpy (>= 1.6.1) Scipy (>= 0.9), ...

  8. 升级tomcat7的运行日志框架到log4j2,可以打进kafka

    为了让web application能随意使用logging组件而不受web容器自身的影响,从tomcat 6.0开始,tomact默认使用的是java.util.logging framework来 ...

  9. SharePoint 2013 关于自定义显示列表表单的bug

    1.在SharePoint 2013中,我们隐藏列表Dispform页面的ListFormWebPart部件,转而使用自定义显示列表表单进行展示,因为这样更容易定制我们需要的显示: 2.之后发现文件夹 ...

  10. [javascript svg fill stroke stroke-width points polygon属性讲解] svg fill stroke stroke-width points polygon绘制多边形属性并且演示polyline和polygon区别讲解

    <!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title ...