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這個對象,假如我們配置在設定檔中,就只需要修改一個位置即可完成所有調用的修改,易於項目的修改。
致謝:感謝您的閱讀!