|
@Autowired
1、Spring 通過一個(gè) BeanPostProcessor 對(duì) @Autowired 進(jìn)行解析,所以要讓 @Autowired 起作用必須事先在 Spring 容器中聲明 AutowiredAnnotationBeanPostProcessor Bean。
或者使用隱式注冊(cè)(隱式注冊(cè) post-processors 包括了 AutowiredAnnotationBeanPostProcessor,CommonAnnotationBeanPostProcessor,PersistenceAnnotationBeanPostProcessor,RequiredAnnotationBeanPostProcessor。)
2、@Autowired默認(rèn)按照類型匹配的方式進(jìn)行注入 3、@Autowired注解可以用于成員變量、setter方法、構(gòu)造器函數(shù)等 4、使用@Autowired注解須有且僅有一個(gè)與之匹配的Bean,當(dāng)找不到匹配的 Bean 或者存在多個(gè)匹配的Bean時(shí),Spring 容器將拋出 異常 5、Spring 允許我們通過 @Qualifier 注釋指定注入 Bean 的名稱。@Autowired 和 @Qualifier 結(jié)合使用時(shí),自動(dòng)注入的策略就從 byType 轉(zhuǎn)變成 byName 了。
@Resource 1、@Resource 的作用相當(dāng)于 @Autowired,只不過 @Autowired 按 byType 自動(dòng)注入,@Resource 默認(rèn)按 byName 自動(dòng)注入罷了。 2、要讓 JSR-250 的注釋生效,除了在 Bean 類中標(biāo)注這些注釋外,還需要在 Spring 容器中注冊(cè)一個(gè)負(fù)責(zé)處理這些注釋的 BeanPostProcessor
3、@Resource 有兩個(gè)屬性是比較重要的,分別是 name 和 type,Spring 將 @Resource 注釋的 name 屬性解析為 Bean 的名字,而 type 屬性則解析為 Bean 的類型。所以如果使用 name 屬性,則使用 byName 的自動(dòng)注入策略,而使用 type 屬性時(shí)則使用 byType 自動(dòng)注入策略。如果既不指定 name 也不指定 type 屬性,這時(shí)將通過反射機(jī)制使用 byName 自動(dòng)注入策略。
@PostConstruct 和 @PreDestroy 標(biāo)注了 @PostConstruct 注釋的方法將在類實(shí)例化后調(diào)用,而標(biāo)注了 @PreDestroy 的方法將在類銷毀之前調(diào)用。
@Component 1、使用@Component注解可以直接定義Bean,而無需在xml定義。但是若兩種定義同時(shí)存在,xml中的定義會(huì)覆蓋類中注解的Bean定義。 2、@Component 有一個(gè)可選的入?yún)ⅲ糜谥付?Bean 的名稱。
3、<context:component-scan/> 允許定義過濾器將基包下的某些類納入或排除。Spring 支持以下 4 種類型的過濾方式:
下面這個(gè)XML配置會(huì)忽略所有的@Repository注解并用“stub”儲(chǔ)存庫(kù)代替。
4、默認(rèn)情況下通過 @Component 定義的 Bean 都是 singleton 的,如果需要使用其它作用范圍的 Bean,可以通過 @Scope 注釋來達(dá)到目標(biāo)
5、Spring 2.5引入了更多典型化注解(stereotype annotations): @Component、@Service和 @Controller。 @Component是所有受Spring管理組件的通用形式; 而@Repository、@Service和 @Controller則是@Component的細(xì)化, 用來表示更具體的用例(例如,分別對(duì)應(yīng)了持久化層、服務(wù)層和表現(xiàn)層)
6、要檢測(cè)這些類并注冊(cè)相應(yīng)的bean,需要在XML中包含以下元素,其中'basePackage'是兩個(gè)類的公共父包 (或者可以用逗號(hào)分隔的列表來分別指定包含各個(gè)類的包)。
此外,在使用組件掃描元素時(shí),AutowiredAnnotationBeanPostProcessor 和CommonAnnotationBeanPostProcessor會(huì)隱式地被包括進(jìn)來。 也就是說,連個(gè)組件都會(huì)被自動(dòng)檢測(cè)并織入 - 所有這一切都不需要在XML中提供任何bean配置元數(shù)據(jù)。 |
|
|