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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...