亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring中IoC優點與缺點是什么

發布時間:2021-08-12 22:30:57 來源:億速云 閱讀:314 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“Spring中IoC優點與缺點是什么”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Spring中IoC優點與缺點是什么”這篇文章吧。

1. 優點

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

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

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

public class B implements BI{
    AInfterface a;

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

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

有兩種使用B的方式:

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

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

  上面兩種方式重要區別:

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

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

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

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

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

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

  ioc容器另外一個著名實現是Spring框架,但是在Spring的配置文件applicationContext.xml中,我們必須考慮上述調用關系:

<bean id="b" class="test.B">
  <property name="a"><ref bean="a"/></property><!-- 必須指定調用關系 -->
  ....
</bean>
<bean id="a" class="test.A">
<bean id="c" class="test.C">

2. 缺點

IoC最大的缺點是什么?

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

以上是“Spring中IoC優點與缺點是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平凉市| 叙永县| 酒泉市| 营山县| 安福县| 甘肃省| 乐平市| 南昌县| 鄂州市| 娄底市| 新野县| 萝北县| 普洱| 花莲市| 威海市| 苏尼特左旗| 七台河市| 连山| 铁岭县| 来宾市| 精河县| 郓城县| 德昌县| 民和| 图木舒克市| 宜都市| 通辽市| 乳山市| 蕲春县| 潍坊市| 远安县| 淅川县| 武义县| 呼伦贝尔市| 多伦县| 玛纳斯县| 富民县| 梅州市| 徐州市| 弥勒县| 衡南县|