對(duì)spring的理解!
點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號(hào)”
優(yōu)質(zhì)文章,第一時(shí)間送達(dá)
? 作者?|??孤獨(dú)的車手
來(lái)源 |? urlify.cn/7RNFBj
66套java從入門到精通實(shí)戰(zhàn)課程分享
1、Spring實(shí)現(xiàn)了工廠模式的工廠類,這個(gè)類名為BeanFactory(接口),
在程序中通常用他的子類ApplicationContext。
Spring相當(dāng)于一個(gè)大的工廠類,在其配置文件中通過(guò)元素配置用于
創(chuàng)建實(shí)例對(duì)象的類名和實(shí)例對(duì)象的屬性。
工廠模式是一種生產(chǎn)對(duì)象型的設(shè)計(jì)模式,有了工廠模式后,當(dāng)需要某個(gè)類的
對(duì)象時(shí),就不再需要new指定的類,而是調(diào)用工廠中的方法即可。也就不需要
關(guān)心對(duì)象的創(chuàng)建過(guò)程。甚至有時(shí)候也許你需要的對(duì)象只要是某種大分類的類型
就可以了,而不必是某個(gè)指定的類型。不會(huì)過(guò)渡依賴某個(gè)類,這些類都是
易于被替換的,以提高整個(gè)項(xiàng)目的可維護(hù)性。
2、Spring提供了對(duì)IOC(控制反轉(zhuǎn))良好支持,IOC也是一種編程思想,
是一種架構(gòu)藝術(shù),利用這種思想可以很好地實(shí)現(xiàn)模塊之間的解耦。
IOC就是對(duì)對(duì)象的創(chuàng)建、維護(hù)、銷毀等生命周期的控制,這個(gè)過(guò)程一般是
由我們的程序去主動(dòng)控制。
DI也是IOC的重要實(shí)現(xiàn)。一個(gè)對(duì)象的創(chuàng)建往往會(huì)涉及到其他對(duì)象的創(chuàng)建,
這就是依賴。IOC機(jī)制既然負(fù)責(zé)了對(duì)象的創(chuàng)建,
那么這個(gè)依賴關(guān)系也就必須由IOC容器負(fù)責(zé)起來(lái)。
負(fù)責(zé)的方式就是DI——依賴注入,通過(guò)將依賴關(guān)系寫(xiě)入配置文件,
然后在創(chuàng)建有依賴關(guān)系的對(duì)象時(shí),由IOC容器注入依賴的對(duì)象。
如在創(chuàng)建A時(shí),檢查到有依賴關(guān)系,IOC容器就把A依賴的對(duì)象B
創(chuàng)建后注入到A中(組裝,通過(guò)反射機(jī)制實(shí)現(xiàn)),然后把A返回給對(duì)象請(qǐng)求者,完成工作。
3、Spring提供了對(duì)AOP技術(shù)的良好封裝,AOP稱為面向切面編程,
就是系統(tǒng)中有很多各不相干的類的方法,
在這些眾多方法中要加入某種系統(tǒng)功能的代碼,
如加入日志,權(quán)限判斷,異常處理,這種應(yīng)用稱為AOP。
實(shí)現(xiàn)AOP功能采用的是代理技術(shù),客戶端程序不再調(diào)用目標(biāo),
而調(diào)用代理類,代理類與目標(biāo)類對(duì)外具有相同的方法聲明。
可以用兩種方式實(shí)現(xiàn)相同的方法聲明,一是實(shí)現(xiàn)相同的接口,
二是作為目標(biāo)的子類。在JDK中采用Proxy類,產(chǎn)生動(dòng)態(tài)代理的
方式為某個(gè)接口生成實(shí)現(xiàn)類,如果要為某個(gè)類生成子類,則采用CGLIB。
系統(tǒng)功能的代理以Advice對(duì)象進(jìn)行提供,要?jiǎng)?chuàng)建出代理對(duì)象,
至少需要目標(biāo)類和Advice類。Spring提供了這種支持,
只需要在Spring配置文件中配置這兩個(gè)元素即可實(shí)現(xiàn)代理和AOP功能。
粉絲福利:Java從入門到入土學(xué)習(xí)路線圖
???

?長(zhǎng)按上方微信二維碼?2 秒
感謝點(diǎn)贊支持下哈?
