欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring中IoC優(yōu)點(diǎn)與缺點(diǎn)解析

 更新時間:2017年11月02日 10:09:41   作者:myLittleGarden  
這篇文章主要為大家詳細(xì)解析了Spring中IoC優(yōu)點(diǎn)與缺點(diǎn),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文為大家分享了Spring中IoC優(yōu)點(diǎn)與缺點(diǎn),供大家參考,具體內(nèi)容如下

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

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

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

  我們從一個簡單例子開始,有一個普通類B代碼如下:

public class B implements BI{
    AInfterface a;

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

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

有兩種使用B的方式:

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

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

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

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

  這時,你會感嘆:哇,有沒有搞錯?我只不過是為了使用B類中一個小小的方法,就花去我這么多時間和精力?

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

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

  當(dāng)然,在使用之前,我們需要做一個簡單的配置,把你將來需要使用的類全部告訴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等其他類),但是在配置中我們無需考慮這種調(diào)用關(guān)系。因此,整個環(huán)節(jié)我們都無需考慮B類中涉及其他類的調(diào)用關(guān)系;這樣是非常省時省力的;特別是如果項目較大,JavaBeans特別多,又是多人協(xié)調(diào)開發(fā),這種方式對提高開發(fā)效率;降低出錯率是非常大的幫助。

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

  ioc容器另外一個著名實現(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)是什么?

生成一個對象的步驟變復(fù)雜了(其實上操作上還是挺簡單的),對于不習(xí)慣這種方式的人,會覺得有些別扭和不直觀。
對象 生成因為是使用反射編程,在效率上有些損耗。但相對于IoC提高的維護(hù)性和靈活性來說,這點(diǎn)損耗是微不足道的,除非某對象的生成對效率要求特別高。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringMVC 向jsp頁面?zhèn)鬟f數(shù)據(jù)庫讀取到的值方法

    SpringMVC 向jsp頁面?zhèn)鬟f數(shù)據(jù)庫讀取到的值方法

    下面小編就為大家分享一篇SpringMVC 向jsp頁面?zhèn)鬟f數(shù)據(jù)庫讀取到的值方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • mybatis-flex實現(xiàn)多數(shù)據(jù)源操作

    mybatis-flex實現(xiàn)多數(shù)據(jù)源操作

    MyBaits-Flex內(nèi)置了功能完善的多數(shù)據(jù)源支持,本文主要介紹了mybatis-flex實現(xiàn)多數(shù)據(jù)源操作,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • java中接口和事件監(jiān)聽器的深入理解

    java中接口和事件監(jiān)聽器的深入理解

    這篇文章主要給大家介紹了關(guān)于java中接口和事件監(jiān)聽器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • java中HashMap的原理分析

    java中HashMap的原理分析

    HashMap在Java開發(fā)中有著非常重要的角色地位,每一個Java程序員都應(yīng)該了解HashMap。詳細(xì)地闡述HashMap中的幾個概念,并深入探討HashMap的內(nèi)部結(jié)構(gòu)和實現(xiàn)細(xì)節(jié),討論HashMap的性能問題
    2016-03-03
  • javax.mail.SendFailedException: Sending failed問題原因

    javax.mail.SendFailedException: Sending failed問題原因

    這篇文章主要介紹了javax.mail.SendFailedException: Sending failed問題原因,需要的朋友可以參考下
    2015-05-05
  • IDEA2022創(chuàng)建Maven Web項目教程(圖文)

    IDEA2022創(chuàng)建Maven Web項目教程(圖文)

    本文主要介紹了IDEA2022創(chuàng)建Maven Web項目教程,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 詳解Spring Boot最新版優(yōu)雅停機(jī)的方法

    詳解Spring Boot最新版優(yōu)雅停機(jī)的方法

    這篇文章主要介紹了Spring Boot最新版優(yōu)雅停機(jī)的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Java實現(xiàn)人機(jī)猜拳小游戲

    Java實現(xiàn)人機(jī)猜拳小游戲

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)人機(jī)猜拳小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Java數(shù)據(jù)結(jié)構(gòu)之雙端鏈表原理與實現(xiàn)方法

    Java數(shù)據(jù)結(jié)構(gòu)之雙端鏈表原理與實現(xiàn)方法

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之雙端鏈表原理與實現(xiàn)方法,簡單描述了雙端鏈表的概念、原理并結(jié)合實例形式分析了java實現(xiàn)雙端鏈表的相關(guān)操作技巧,需要的朋友可以參考下
    2017-10-10
  • Java泛型類與泛型方法的定義詳解

    Java泛型類與泛型方法的定義詳解

    這篇文章主要介紹了Java泛型類與泛型方法的定義,結(jié)合實例形式詳細(xì)分析了java泛型類與泛型方法定義、用法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-08-08

最新評論