spring學習-3

来源:http://www.cnblogs.com/feiii/archive/2017/01/19/6309069.html
-Advertisement-
Play Games

spring的自動裝配 spring IOC容器可以自動裝配bean,只需要在bean的autowire屬性指定自動裝配的模式。 模式: 1、 byType :根據類型自動裝配。根據bean的類型和當前bean的屬性的類型進行自動裝配,若IOC容器中有1個以上的類型匹配的bean,則拋出異常; 2、 ...


spring的自動裝配

spring IOC容器可以自動裝配bean,只需要在bean的autowire屬性指定自動裝配的模式。

模式:

1、byType:根據類型自動裝配。根據bean的類型和當前bean的屬性的類型進行自動裝配,若IOC容器中有1個以上的類型匹配的bean,則拋出異常;

2、byName:根據名稱自動裝配,byname根據bean的名字和當前bean的setter風格的屬性名進行裝配,也就是說bean的id和類中的set方法的名字相對應,如類中的set方法是setUser(),則其對應xml文件配置的bean的id=“user”,若id="user2",則自動裝配失敗,獲取不到對應bean的值,所以我們常常把bean的id寫成對應類名的首字母小寫;

3、constructor: 通過構造器自動裝配(不推薦使用)。

配置spring自動裝配的xml文件

    <bean id="car" class="com.test.autowire.Car" 
          p:name="ddd" p:price="20000"></bean>

    <!-- 在自動裝配使用byType時,同時有多個類型匹配的bean會拋出異常
     <bean id="car2" class="com.test.autowire.Car" 
        p:name="dazhong" p:price="20000"></bean> -->

    <bean id="address" class="com.test.autowire.Address" p:city="beijing"
        p:no="23"></bean>
    <!-- 在自動裝配使用byName時,id沒有對應的setter方法,則獲取不到配置的bean值 
    <bean id="address1" class="com.test.autowire.Address" 
        p:city="beijing" p:no="23"></bean> -->

    <!--為person bean添加自動裝配 autowire="byType"或者autowire="byName" -->
    <bean id="person" class="com.test.autowire.Person" p:name="fei"
          autowire="byName"></bean>

運行效果

1、成功運行:

2、在自動裝配使用byType時,同時有多個類型匹配的bean會拋出錯誤異常信息

3、在自動裝配使用byName時,id沒有對應的setter方法,則獲取不到配置的bean值

缺點:

1、在bean的配置文件設置autowire屬性進行自動裝配,會裝配所有bean的屬性,若希望只裝配個別的屬性就顯得不夠靈活;
2,、不能夠同時裝配byName 和byType所以在項目中很少使用自動裝配,但是在整合框架的時候能夠用到。

bean的繼承和依賴關係

繼承:被繼承的bean叫做父bean,繼承的叫做子bean

1、子bean從父bean繼承配置,包括屬性配置,子bean也可以覆蓋從父bean繼承過來的配置;

2、父bean作為模板,設置abstract屬性為true,這樣就不能實例化這個bean,並不是所有的屬性被繼承,如abstract,autowire等不會被繼承;

3、可以忽略父bean的class屬性,讓子bean指定自己的類,而共用相同的屬性配置,此時abstract 必須為true.

配置spring繼承和依賴的xml文件

<!-- 抽象bean:bean的abstract屬性為true的bean,這樣的bean不能被實例化,只能用來繼承配置; 若某一個的bean的class屬性沒有指定,則該bean必須是一個抽象bean -->
    <bean id="address" p:city="beijing" p:no="23" abstract="true"></bean>

    <!-- bean配置的繼承:使用bean的parent屬性指定繼承那個bean的配置 -->
    <bean id="address2" class="com.test.autowire.Address" parent="address"
        p:no="33"></bean>
    
    <bean id="car" class="com.test.autowire.Car" p:name="ddd" p:price="20000"></bean>
    
    <!--bean的依賴:depends-on屬性,前置依賴的bean在本bean實例化之前創建好,若沒有創建好則拋出異常 -->
    <bean id="person" class="com.test.autowire.Person" p:name="qin"
        p:address-ref="address2" depends-on="car"></bean>

運行效果

1、成功運行:

2、前置依賴的bean在本bean實例化之前沒有創建好,拋出異常錯誤信息




您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Python 函數 函數在Python中扮演著什麼樣的角色? 1.最大化的代碼重用和最小的代碼冗餘 2.流程的分解 首先讓我們編寫一個最簡單的函數'hello world!' 怎麼調用? ⤵️ 輸出什麼呢? 在此需要註意的是函數的調用要放在函數體的下麵,否則⤵️ 是的他會報錯,由此可以知道的是如果我 ...
  • 問題描述 小弱T在閑暇的時候會和室友打撲克,輸的人就要負責洗牌。雖然小弱T不怎麼會洗牌,但是他卻總是輸。 漸漸地小弱T發現了一個規律:只要自己洗牌,自己就一定會輸。所以小弱T認為自己洗牌不夠均勻,就獨創了一種小弱洗牌法。 小弱洗牌法是這樣做的:先用傳統洗牌法將52張撲克牌(1到K各四張,除去大小王) ...
  • jsp org.apache.jasper.servlet.JspServlet fork false xpoweredBy false ... ...
  • step1: 下載SSH連接到IP地址(阿裡雲上購買的) step2: 安裝下載phpstudywget -c http://lamp.phpstudy.net/phpstudy.bin chmod +x phpstudy.bin #許可權設置./phpstudy.bin #運行安裝 (註意,在./p ...
  • 1、項目創建 2、添加常用文件夾 一般名稱為static與templates,在新版本中需要手動添加,static用於靜態資源,templates用於存放模板文件。以下是創建好之後的目錄,註意在新建的項目testsite目錄(上面創建時使用的名稱)下麵,還會有一個testsite文件夾。 3、一個用 ...
  • 2.資料庫連接 3.資料庫操作 4.主函數內容 ...
  • 1.下載安裝mysql時mysql connectors有什麼用? mysql connectors是用不同的客戶端程式連接mysql需要用的到驅動程式,比如象odbc、c++、.net之類的。 這裡我們用java連接mysql所以要下載相應驅動程式connector/J 下載地址:https:// ...
  • Luhn檢驗和驗證 Luhn公式是一種廣泛使用的系統,用於對標識號進行驗證。它根據原始標識號,把每隔一個數字的值擴大一倍。然後把各個單獨數字的值加在一起(如果擴大一倍後的值為2個數字,就把這兩個數字分別相加)。如果相加之後可以被10整除,那麼這個標識號就是合法的。 編寫一個程式,接受一個任意長度的標 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...