spring注解配置ioc
xml的配置:
<bean id = "xxxx" class = "xxxxx.xxx.xxx"
????Scope = " " init-method=" " destory-method= " ">
????<property name = " " value=""或者ref="" ></property>
</bean>
注解的配置有:
用于創(chuàng)建對(duì)象的:
????和在xml配置文件中編寫(xiě)一個(gè)<bean>標(biāo)簽實(shí)現(xiàn)的功能一樣
????@Component:把當(dāng)前類對(duì)象存入spring容器中。又因?yàn)樵谌萜髦惺莐ey-value結(jié)構(gòu)。對(duì)象是value,如何取出?這時(shí)候就要知道,注解也是有屬性的,即value,用于指定bean的id,它的默認(rèn)值是當(dāng)前類名,且首字母改小寫(xiě)。

注:要使用注解配置,需要先開(kāi)啟注解掃描。具體操作要在bean.xml中,告知spring在創(chuàng)建容器時(shí)要掃描的包,配置所需要的標(biāo)簽不是在beans的約束中,而是一個(gè)名稱為context名稱空間和約束中

Controller:一般用在表現(xiàn)層
Service:業(yè)務(wù)層
Respository:持久層
以上三個(gè)注解作用和屬性與Component完全一樣,它們的作用是spring為我們提供明確的三層使用的注解,使我們的三層對(duì)象更加清晰。

用于注入數(shù)據(jù)的:
????和在xml配置文件中的bean標(biāo)簽中寫(xiě)一個(gè)<property>標(biāo)簽的作用一樣
Autowired:
????作用:自動(dòng)按照類型注入,只要容器中有唯一的一個(gè)bean對(duì)象類型和要注入的變量類型匹配,就可以注入成功。如果ioc容器中沒(méi)有任何bena的類型和要注入的變量類型匹配,則報(bào)錯(cuò)。如果ioc容器中有多個(gè)類型匹配,先按變量類型,再按變量名稱匹配。
????出現(xiàn)位置:可以是變量上,也可以是方法上。
????細(xì)節(jié):使用注解注入時(shí),set方法就不是必須的了。
????Qualifier:
????? ?作用,可按照類中注入的基礎(chǔ)上,再按照名稱注入,給類成員注入時(shí)不能單獨(dú)使用,但是給方法參數(shù)注入可以。
????????屬性:value,用于指定注入bane的id
????Resource
????作用,直接按照bean的id注入,并且可以獨(dú)立使用
????? ? 屬性:name:指定bean的id
以上三種注入方式都只能注入其他bean類型的數(shù)據(jù),而基本類型和string類型無(wú)法使用上述注解實(shí)現(xiàn),且集合類型的注入只能通過(guò)xml來(lái)實(shí)現(xiàn)。
????Value
????????作用,用于注入基本類型和String類型的數(shù)據(jù)
????????屬性:也叫value,用于指定數(shù)據(jù)的值,可以使用SpEL(spring的el表達(dá)式)SpEL的寫(xiě)法:${表達(dá)式}

用于改變作用范圍的:
????和bean標(biāo)簽中使用Scope屬性實(shí)現(xiàn)的功能一樣
Scope
????作用,用于指定bean的作用范圍
????屬性:
????????value:指定范圍的取值,常用取值singleton prototype 分別對(duì)應(yīng)單例 多例。不寫(xiě)默認(rèn)單例
和生命周期相關(guān)的:
????和bean標(biāo)簽中使用init-method和destroy-method作用一樣
????preDestroy ,用于指定銷(xiāo)毀方法
????preConstruct , 用于指定初始化方法
