spring 注入一個以枚舉類型對象,

來源:互聯網
上載者:User

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

  致謝:感謝您的閱讀!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.