Spring中IoC優(yōu)點(diǎn)與缺點(diǎn)是什么

這篇文章主要為大家展示了“Spring中IoC優(yōu)點(diǎn)與缺點(diǎn)是什么”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Spring中IoC優(yōu)點(diǎn)與缺點(diǎn)是什么”這篇文章吧。

成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的宿松網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

1. 優(yōu)點(diǎn)

        我們知道,在Java基本教程中有一個(gè)定律告訴我們:所有的對(duì)象都必須創(chuàng)建;或者說(shuō):使用對(duì)象之前必須創(chuàng)建,但是現(xiàn)在我們可以不必一定遵循這個(gè)定律了,我們可以從Ioc容器中直接獲得一個(gè)對(duì)象然后直接使用,無(wú)需事先創(chuàng)建它們。

這種變革,就如同我們無(wú)需考慮對(duì)象銷毀一樣;因?yàn)镴ava的垃圾回收機(jī)制幫助我們實(shí)現(xiàn)了對(duì)象銷毀;現(xiàn)在又無(wú)需考慮對(duì)象創(chuàng)建,對(duì)象的創(chuàng)建和銷毀都無(wú)需考慮了,這給編程帶來(lái)的影響是巨大的。

我們從一個(gè)簡(jiǎn)單例子開(kāi)始,有一個(gè)普通類B代碼如下:

public class B implements BI{
    AInfterface a;

    public B(AInfterface a){
      this.a = a
    }

    public void invoke(){
      /** ...*/
    }
}

有兩種使用B的方式:

普通無(wú)Ioc容器的調(diào)用方式:
BI b = new B(new A());//需要在生成B實(shí)例之前 生成A等實(shí)例
b. invoke();

使用Ioc容器的革命調(diào)用方式:
BI b = (BI) WebAppUtil.getService(“b”);
b. invoke();

上面兩種方式重要區(qū)別:

前者需要照顧B類中A類的實(shí)例化,如果B類中調(diào)用不只A類一個(gè),還有更多其他類如C/D/E等類,這樣,你在使用B類時(shí),還需要研究其他類的創(chuàng)建,如果C/D/E這些類不是你自己編寫,你還需要翻閱它們的API說(shuō)明,研究它們應(yīng)該如何創(chuàng)建?是使用New 還是工廠模式 還是單態(tài)調(diào)用?

這時(shí),你會(huì)感嘆:哇,有沒(méi)有搞錯(cuò)?我只不過(guò)是為了使用B類中一個(gè)小小的方法,就花去我這么多時(shí)間和精力?

當(dāng)我們使用第二種方式時(shí),就無(wú)需花很多精力和時(shí)間考慮A/C/D/E等類的創(chuàng)建。

使用Ioc容器,你再也不必做這些僵化愚蠢的工作了,我們只需從ioc容器中抓取一個(gè)類然后直接使用它們。

當(dāng)然,在使用之前,我們需要做一個(gè)簡(jiǎn)單的配置,把你將來(lái)需要使用的類全部告訴ioc容器,例如Jdon框架的ioc容器配置jdonframework.xml如下:

<app>
  <services>
    <pojoService name="b" class="test.B"/>
    <pojoService name="a" class="test.A"/>
    <pojoService name="c" class="test.C"/>
 
  </services>
</app>

注意:雖然B類代碼調(diào)用了A類(甚至可能調(diào)用C等其他類),但是在配置中我們無(wú)需考慮這種調(diào)用關(guān)系。因此,整個(gè)環(huán)節(jié)我們都無(wú)需考慮B類中涉及其他類的調(diào)用關(guān)系;這樣是非常省時(shí)省力的;特別是如果項(xiàng)目較大,JavaBeans特別多,又是多人協(xié)調(diào)開(kāi)發(fā),這種方式對(duì)提高開(kāi)發(fā)效率;降低出錯(cuò)率是非常大的幫助。

如果你的項(xiàng)目中有非常多的類;調(diào)用關(guān)系很復(fù)雜,而且調(diào)用關(guān)系隨時(shí)都可能變化,那么,使用無(wú)需照顧調(diào)用關(guān)系的Ioc容器無(wú)疑是減輕開(kāi)發(fā)負(fù)擔(dān)的首選。

ioc容器另外一個(gè)著名實(shí)現(xiàn)是Spring框架,但是在Spring的配置文件applicationContext.xml中,我們必須考慮上述調(diào)用關(guān)系:

<bean id="b" class="test.B">
  <property name="a"><ref bean="a"/></property><!-- 必須指定調(diào)用關(guān)系 -->
  ....
</bean>
<bean id="a" class="test.A">
<bean id="c" class="test.C">

2. 缺點(diǎn)

IoC最大的缺點(diǎn)是什么?

生成一個(gè)對(duì)象的步驟變復(fù)雜了(其實(shí)上操作上還是挺簡(jiǎn)單的),對(duì)于不習(xí)慣這種方式的人,會(huì)覺(jué)得有些別扭和不直觀。
對(duì)象 生成因?yàn)槭鞘褂梅瓷渚幊?,在效率上有些損耗。但相對(duì)于IoC提高的維護(hù)性和靈活性來(lái)說(shuō),這點(diǎn)損耗是微不足道的,除非某對(duì)象的生成對(duì)效率要求特別高。

以上是“Spring中IoC優(yōu)點(diǎn)與缺點(diǎn)是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

文章名稱:Spring中IoC優(yōu)點(diǎn)與缺點(diǎn)是什么
轉(zhuǎn)載源于:http://muchs.cn/article20/ijdsjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站響應(yīng)式網(wǎng)站、App設(shè)計(jì)、企業(yè)網(wǎng)站制作、關(guān)鍵詞優(yōu)化、營(yíng)銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)