使用工廠方法創(chuàng)建bean
除了直接在xml中通過(guò)放射直接創(chuàng)建bean晶乔,Spring還提供了使用工廠方法創(chuàng)建bean的功能嗤谚。Spring支持兩種模式提供bean逝嚎。
1.靜態(tài)工廠
2.實(shí)例工廠
一僻弹、靜態(tài)工廠創(chuàng)建提供bean
1.1 靜態(tài)工廠不需要實(shí)例化工廠本身,需要提供一個(gè)注入bean對(duì)象的方法并炮,例如:getCar方法默刚。注意該方法也必須是靜態(tài)的,利用靜態(tài)工廠方法定義的bean item種逃魄, class屬性不在是bean的全類名荤西, 而是靜態(tài)工廠的全類名, 而且還需要指定工廠里的
getBean 靜態(tài)方法名字和參數(shù)
1.2在xml中配置靜態(tài)工廠
factory-method:指向靜態(tài)的提供相應(yīng)bean的方法
constructor-arg :對(duì)應(yīng)提供bean函數(shù)的方法參數(shù)伍俘。
二邪锌、使用實(shí)例化工廠的方式創(chuàng)建bean
2.1 實(shí)例化一個(gè)工廠方法 首先需要?jiǎng)?chuàng)建一個(gè)實(shí)例工廠的bean,class指向?qū)嵗S方法癌瘾,創(chuàng)建一個(gè)工廠方法實(shí)例
**2.2 通過(guò)工廠方法實(shí)例提供指定的對(duì)象
factory-bean:指向工廠方法
factory-method:提供bean的方法
**
2.3 直接向getAudi索取指定的bean時(shí)觅丰,首先會(huì)創(chuàng)建carFactory,然后通過(guò)getCar方法獲取bean對(duì)象
三妨退、使用FactoryBean創(chuàng)建bean
3.1 首先創(chuàng)建一個(gè)Factory實(shí)現(xiàn)FactoryBean接口
3.2 實(shí)現(xiàn)getObject妇萄,getObjectType方法,getObject方法返回要?jiǎng)?chuàng)建的對(duì)象咬荷,在實(shí)際通過(guò)FactoryBean拿到對(duì)象時(shí)就是通過(guò)getObject方法冠句,getObjectType指定要返回對(duì)象的類型
3.3 在xml中配置factory對(duì)應(yīng)的bean
3.4 使用FactoryBean獲取bean的實(shí)例