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 ...
随机推荐
- Myeclipse10下载,安装,破解,插件,优化介绍
一.Myeclipse10下载与破解 Genuitec 公司发布了MyEclipse 10,一款Genuitec旗下的商业化Eclipse集成开发工具的升级版本.MyEclipse 10基于Eclip ...
- Exception loading sessions from persistent storage
严重: Exception loading sessions from persistent storage java.io.EOFException 删除Tomcat里面的work/Catalina ...
- Intro.js 网站演示
Intro.js 为您的网站和项目提供一步一步的.更好的介绍 使用简单 引入 js 和 css,然后在代码中加入步骤和介绍. 快速小巧 7 KB 的 JavaScript 和 3 KB CSS,就是全 ...
- JSON.stringify()、JSON.parse()和eval(string)
1.JSON.stringify()用于从一个对象解析出字符串,eg: var obj = {"name":"奔跑的蜗牛","age":&q ...
- transform:rotate在手机上显示有锯齿的解决方案大全
先来个兼容性说明,洗洗脑: div{transform:rotate(7deg);-ms-transform:rotate(7deg); /* IE 9 */-moz-transform:rotate ...
- 从0开始学angularjs-笔记02
上一节课主要跟大家讲解了angularjs的几种特性和看了一个简单的双向绑定的例子.最近都没有时间写博客了....忙成狗呀...今天周末,在写一篇吧~~ 今天主要跟大家详细讲解一下angularjs的 ...
- Windows下安装scikit-learn
Windows下安装scikit-learn 准备工作 Python (>= 2.6 or >= 3.3), Numpy (>= 1.6.1) Scipy (>= 0.9), ...
- 升级tomcat7的运行日志框架到log4j2,可以打进kafka
为了让web application能随意使用logging组件而不受web容器自身的影响,从tomcat 6.0开始,tomact默认使用的是java.util.logging framework来 ...
- SharePoint 2013 关于自定义显示列表表单的bug
1.在SharePoint 2013中,我们隐藏列表Dispform页面的ListFormWebPart部件,转而使用自定义显示列表表单进行展示,因为这样更容易定制我们需要的显示: 2.之后发现文件夹 ...
- [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 ...