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这个对象,假如我们配置在配置文件中,就只需要修改一个位置即可完成所有调用的修改,易于项目的修改。
致谢:感谢您的阅读!
spring 注入一个以枚举类型对象的更多相关文章
- Spring学习(八)-----Spring注入值到集合类型的例子
下面例子向您展示Spring如何注入值到集合类型(List, Set, Map, and Properties). 支持4个主要的集合类型: List – <list/> Set – &l ...
- JavaScript一个简易枚举类型实现扑克牌
<script type="text/javascript"> /** * 这个函数创建一个新的枚举类型,实参对象表示类的每个实例的名字和值 * 返回值是一个构造函数, ...
- 测者的测试技术手册:Junit单元测试遇见的一个枚举类型的坑(枚举类型详解)
Enum的简介 枚举类型很早就在计算机语言中存在了,主要被用来将一组相似的值包含进一种类型中,这种类型的名称被定义成独一无二的类型描述符,这就是枚举类型. 在java语言中,枚举类型是一个完整功能的类 ...
- Java中怎样由枚举常量的ordinal值获得枚举常量对象
Java1.5提供了关键字enum,能够通过该关键字方便得定义自己须要的枚举类型,比方 enum Season { SPRING, SUMMER, AUTUMN, WINTER } 就定义了一个季节枚 ...
- C#语言基础——结构体和枚举类型
结构体和枚举类型 一.结构体(struct) 结构类型是用户自己定义的一种类型,它是由其他类型组合而成的,可包含构造函数.常数.字段.方法.属性.索引器.运算符.事件和嵌套类型的值类型.结构在几个重要 ...
- C#的枚举数(Enumerator)和可枚举类型(Enumerable)
数组可以被foreach语句遍历数组中的元素,原因是数组可以按需提供一个叫做枚举数(enumerator)的对象.枚举数可以依次返回请求的数组的元素. 对于有枚举数的类型而言,必须有一个方法来获取它们 ...
- 自定义枚举类型的常用操作-附源码(xjl456852原创)
自定义枚举类型中,假如我们有name和desc这样的属性,并在这个基础上定义了多个对象. 那么就可能用到通过name获取desc,或者通过desc获取name.通过name或者desc获取对应的枚举对 ...
- Java中的枚举类型详解
枚举类型介绍 枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中.而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常量的定义 ...
- Java枚举类型的用法
JDK1.5引入了新的类型——枚举.在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便. 1.用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fia ...
随机推荐
- CentOS 6.5下Redis安装详细步骤
Redis简介: Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工 ...
- GJM : 用JIRA管理你的项目(一)JIRA环境搭建 [转载]
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- 分布式环境下rabbitmq发布与订阅端
假设rabbitmq配置了集群,且客户端连接rabbitmq-server通过lvs实现HA但一般情况下不建议做LB.在分布式系统的环境下,由于节点的非预知性,使用spring amqp模板进行配置不 ...
- Aurelia – 模块化,简单,可测试的 JS 框架
Aurelia 是下一代 JavaScript 客户端框架,利用简单的约定来激发你的创造力.凭借其强大的专注于开发经验, Aurelia 可以使您不仅创造惊人的应用程序,同时也享受这个过程.它经过精心 ...
- 13个风格独特的关于页面(About Pages)设计
如何向其他人呈现你自己和你的作品呢?关于页面的设计是非常重要的,以让你的观众更多地了解你,你的工作和你的想法.这是一个很好的方式来获得更加个性化的展示效果. 设计一个漂亮的关于页面是具有挑战性的.出于 ...
- go语言 安装版 Windows7安装截图
这个比较简单的 一路next. 查看:解压版安装go. //http://www.cnblogs.com/osfipin/
- js中如何获取纯正的undefined?
1.为什么要获取undefined? 因为undefined在javascript中不是保留字,可以被用户当做变量来赋值,这样如果我们后期需要用到undefined来检测一个变量的话,那么检测的值就不 ...
- 对于Access数据库查询遇到空值的解决办法
1.Access数据库在office环境下对于null是识别的,但是,在开发环境下,Access数据库对于where xxx is null是不识别的. 2.查询空值解决办法:select * fro ...
- Android 获取图片exif信息
使用android api读取图片的exif信息 布局代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/r ...
- 不用画线 设置UITableView的全屏分隔线
如图 添加如下代码 sTableView.separatorInset = UIEdgeInsetsZero; sTableView.layoutMargins = UIEdgeInsetsZero ...