標籤:spring面試 面試 spring註解 resource autowire
20 基於Java的Spring註解配置(給一些註解的例子)
基於Java的配置,允許你在少量的Java註解的協助下,進行你的大部分Spring配置而非通過XML檔案。
以@Configuration註解為例,它用來標記類可以當做一個bean的定義,被SpringIOC容器使用。另一個例子是@Bean註解,它表示此方法將要返回一個對象,作為一個bean註冊進Spring應用上下文。(一般很少用java代碼對中繼資料進行配置)
21 Spring基於註解的容器配置、和開啟配置
相對於XML檔案,註解型的配置依賴於通過位元組碼中繼資料裝配組件,而非角括弧的聲明。開發人員通過在相應的類,方法或屬性上使用註解的方式,直接組件類中進行配置,而不是使用xml表述bean的裝配關係。
註解裝配在預設情況下是不開啟的,為了使用註解裝配,我們必須在Spring設定檔中配置<context:annotation-config/> 元素。(<context:annotation-config/>標籤可以開啟自動掃描,同時也開啟註解裝配)
22 Spring註解簡介
- @Required:這個註解表明bean的屬性必須在配置的時候設定,通過一個bean定義的顯式的屬性值或通過自動裝配,若@Required註解的bean屬性未被設定,容器將拋出BeanInitializationException。
- @Autowired:註解提供了更細粒度的控制,包括在何處以及如何完成自動裝配。它的用法和@Required一樣,修飾setter方法、構造器、屬性或者具有任意名稱和/或多個參數的PN方法。
- @Qualifier:當有多個相同類型的bean卻只有一個需要自動裝配時,將@Qualifier註解和@Autowire 註解結合使用以消除這種混淆,指定需要裝配的確切的bean。
23 @Autowired 和@Resource 的區別
- @Autowired和@Resource都可以用來裝配bean,都可以寫在欄位上,或者方法上。
- @Autowired屬於Spring的;@Resource為JSR-250標準的注釋,屬於J2EE的。
- @Autowired預設按類型裝配,預設情況下必須要求依賴對象必須存在,如果要允許null值,可以設定它的required屬性為false,例如:@Autowired(required=false),如果我們想使用名稱裝配可以結合@Qualifier註解進行使用,如下:
@Autowired()
@Qualifier("baseDao")
private BaseDao baseDao;
- @Resource,預設安裝名稱進行裝配,名稱可以通過name屬性進行指定,如果沒有指定name屬性,當註解寫在欄位上時,預設取欄位名進行安裝名稱尋找,如果註解寫在setter方法上預設取屬性名稱進行裝配。當找不到與名稱匹配的bean時才按照類型進行裝配。但是需要注意的是,如果name屬性一旦指定,就只會按照名稱進行裝配。例如:
@Resource(name="baseDao")
private BaseDao baseDao;
推薦使用:@Resource註解在欄位上,這樣就不用寫setter方法了,並且這個註解是屬於J2EE的,減少了與spring的耦合。這樣代碼看起就比較優雅。
Java面試--Spring技術要點--Spring註解