Spring4學習筆記----Spring的依賴注入詳解
Spring是一個IOC和AOP容器,Spring是非侵入型的,基於Spring開發的web應用中的物件可以不依賴Spring的API.
IOC:依賴注入 (讓Spring Bean以配置檔案的形式組織在一起)
所謂依賴注入:在程式執行過程中,如需要另外一個物件協作(呼叫他的屬性、方法),無需在程式碼中建立該被調物件,而是依賴外部容器的注入。
一、Spring容器
(1)
Spring容器是Bean例項的工廠,並管理容器中的Bean。
Spring容器有兩個核心介面:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子介面。它們都可以代表
Bean是Spring容器的基本單位,在基於Spring的JavaEE應用中,所有的元件都被當成Bean處理,任何的java物件、java元件都被當成Bean處理,這些元件並不是標準的javabean.
(2)
BeanFactory負責配置、建立、管理Bean,還負責管理Bean與Bean之間的依賴關係。
ApplicationContextBeanFactory的子介面,作為Spring容器更方便。
二、Spring的核心機制:依賴注入
依賴注入是目前最優秀的解耦方式,依賴注入讓Spring的Bean以配置檔案組織在一起,而不是以編碼的方式耦合在一起。
所謂依賴注入:在程式執行過程中,如需要另外一個物件協作(呼叫他的屬性、方法),無需在程式碼中建立該被調物件,而是依賴外部容器的注入。
依賴注入:在Spring的xml配置檔案中
Id:指定Bean的唯一標識,程式通過id屬性值來訪問Bean例項
class:指定Bean的實現類
二、依賴注入方式:
(1)屬性注入
<bean id="xx" class="">
<property name=""></property>
</bean>
(2)構造器注入
建構函式注入;(通過型別;通過索引;聯合使用)
<bean id="xx" class="">
<constructor-arg type="" value=""></constructor-arg>
</bean>
<bean id="xx" class="">
<constructor-arg index="" value=""></constructor-arg>
</bean>
(3)工廠方法注入;(非靜態工廠,靜態工廠)
非靜態工廠:
<!-- 裝配工廠bean -->
<bean id="serviceFactory" class="xx.xxx.ServiceFactory"></bean>
<!-- 工廠createXxx() 方法返回 xxxService 物件 -->
<bean id="xxxService" factory-bean="serviceFactory" factory-method="createXxx" >
</bean>
靜態工廠:
<!-- 工廠createXxx() 方法返回 xxxService 物件 -->
<bean id="xxxService" class="xx.xxx.ServiceFactory" factory-method="createXxx" >
</bean>
(4)泛型依賴注入;
三:注入引數
(1)注入基本型別:
<bean id="xx" class="">
<property name=""></property>
</bean>
(2)注入bean(注入的屬性為引用型別使用ref)
<bean id="people1" class="com.bean.People">
<property name="name" value="wendy"></property>
<property name=" idCard " ref=" idCard 1"></property>
</bean>
<bean id="idCard1" class="com.bean. IDCard "></bean>
(3)內部bean(即該bean物件只屬於父類bean)
當 Bean 例項僅僅給一個特定的屬性使用時, 可以將其宣告為內部 Bean. 內部 Bean 宣告直接包含在 <property> 或 <constructor-arg> 元素裡, 不需要設定任何 id 或 name 屬性,內部 Bean 不能使用在任何其他地方
<bean id=" idCard 2" class="com.bean. IDCard ">
<property name="name" value="wendy"></property>
<property name=" idCard ">
<bean class="com.bean. IDCard ">
<property name="" value=""></property>
</bean>
</property>
</bean>
(4)null值
可以使用專用的 <null/> 元素標籤為 Bean 的字串或其它物件型別的屬性注入 null 值
<bean id="people2" class="com.bean.People">
<property name="name" value="tom"></property>
<property name=" idCard ">
<null></null>
</property>
</bean>
(5)級聯屬性(注入屬性的屬性)
<bean id="people3" class="com.bean.People">
<property name="name" value="李四"></property>
<!-- 前提是People中的IDCard物件已經建立 -->
<property name="idCard.number" value=""></property>
<property name="idCard.address" value=""></property>
</bean>
(6)集合型別屬性(注入的屬性有多個值,用list)
<bean id="people4" class="com.bean.People">
<property name="name" value="張三"></property>
<property name="hobbies">
<list>
<value>唱歌</value>
<value>跳舞</value>
</list>
</property>
</bean>
(注入的屬性為key-value形式)
<bean id="people5" class="com.bean.People">
<property name="pname" value="張三"></property>
<property name="works">
<map>
<entry>
<key><value>上午</value></key>
<value>寫程式碼</value>
</entry>
<entry>
<key><value>下午</value></key>
<value>看電影</value>
</entry>
</map>
</property>
</bean>
Properties屬性
<bean id="people6" class="com.bean.People">
<property name="name" value="張三"></property>
<property name="properties">
<props>
<prop key=""></prop>
<prop key=""></prop>
</props>
</property>
</bean>
相關推薦
Spring4學習筆記----Spring的依賴注入詳解
Spring是一個IOC和AOP容器,Spring是非侵入型的,基於Spring開發的web應用中的物件可以不依賴Spring的API. IOC:依賴注入 (讓Spring Bean以配置檔案的形式組織在一起) 所謂依賴注入:在程式執行過程中,如需要另外一個物件協作(呼叫
Spring 學習筆記 - IOC/依賴注入
簡述: Spring 學習 - IOC/依賴注入 1. Bean 的例項化 1) 直接使用原始類建立bean <bean id="exampleBean" class="com.anialy.test.ExampleBean" /> 2) 使用工廠方法建立
Hadoop學習筆記:MapReduce框架詳解
object 好的 單點故障 提高 apr copy 普通 exce 代表性 開始聊mapreduce,mapreduce是hadoop的計算框架,我學hadoop是從hive開始入手,再到hdfs,當我學習hdfs時候,就感覺到hdfs和mapreduce關系的緊密。這個
jvm學習筆記之對象詳解
時間 分代 創建 com 詳解 要求 技術 wid src 一、對象的組成 對象頭(Header): 運行時數據:存儲對象運行時的數據,如哈希碼、GC分代年齡、鎖狀態標誌、線程持有的鎖、偏向線程ID、偏向時間戳等,這部分數據官方成為
Java學習筆記54(反射詳解)
pos code 重名 java學習筆記 spl catch 兩種 new fig 反射概念: java反射機制是在運行狀態中,對於任意一個類,都能知道所有屬性和方法 對於任意一個對象都能調用它的任意一個方法和屬性,這種動態獲取和調用的功能稱為java的反射機制 實際作
struts2框架學習筆記2:配置詳解
true class 規範 開發規範 刪除用戶 建議 類名 esp 需要 核心配置文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Soft
Memcached學習筆記之三:詳解MemCached原理
memcached是一個高效能的分散式記憶體快取伺服器,memcached在Linux上可以通過yum命令安裝,這樣方便很多,在生產環境下建議用Linux系統,memcached使用libevent這個庫在Linux系統上才能發揮它的高效能。它的分散式其實在服務端是不具有分散式的特徵的,是依靠客戶端
Angular學習筆記3--依賴注入
基本用法 1.建立服務 ng g service product/product 2.編寫服務 getProduct(): Product { return new Product('123', 'productName') } getProduct(): Product {
前端 學習筆記(二) http詳解
以前看到有關http的東西,我都會繞過去,決定這東西沒太大用處。現在既然決定成為一名優秀的web前端工程師,那麼這個時候就應該知難而不退。 一、什麼是HTTP協議? HTTP是Hyper Text Transport Protocol的縮寫,望文知意便是 超
Java學習筆記03--main方法詳解;單例設計模式;繼承;instanceof 關鍵字
===============java相關講解============= main函式的詳解: public : 公共的。 許可權是最大,在任何情況下都可以訪問。 原因: 為了保證讓jvm在任何情況下都可以訪問到main方法。 st
SpringBoot 學習筆記二 配置檔案詳解
在建立SpringBoot專案時,工程會自動建立一個application.properties,或者application.yml,兩種檔案格式都支援,這裡用application.yml,加入以下配置,注意空格 1. 引入依賴 &
Flume學習筆記及配置引數詳解
一、什麼是flume Flume是一個高可用的,高可靠的,分散式的海量日誌採集、聚合和傳輸的系統,Flume支援在日誌系統中定製各類資料傳送方,用於收集資料;同時,Flume提供對資料進行簡單處理,並寫到各種資料接受方(可定製)的能力。 二、flume特點 flume的資料
樹莓派學習筆記——wiringPi GPIO使用詳解
2.BCM2835 GPIO相關暫存器 (該部分表述可能有誤,正在確認修改中) 樹莓派平臺的GPIO驅動,例如RPi.GPIO和WiringPi均採用直接操作GPIO暫存器的方式,樹莓派的CPU採用博通的BCM2835,想要更好的瞭解樹莓派的GPIO驅動實現就必須閱讀BCM2835的資料手冊。在B
cocos2d-x學習筆記-CCMenu和CCMenuItem詳解
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
【學習筆記】Log4j.properties詳解
一、Log4j簡介 Log4j有三個主要的元件:Loggers(記錄器),Appenders (輸出源)和Layouts(佈局)。這裡可簡單理解為日誌類別,日誌要輸出的地方和日誌以何種形式輸出。綜合使用這三個元件可以輕鬆地記錄資訊的型別和級別,並可以在執行時控制日誌輸出
Android程式設計學習筆記 之 ListActivity原始碼詳解
前言 最近在研究PreferenceActivity發現是繼承自ListActivity的,開啟看了下ListActivity的原始碼,發現也不長,就詳細閱讀認識一下。 正文 ListActi
演算法學習筆記:連通圖詳解
## 什麼是連通圖 ? 在圖論中,連通圖基於連通的概念。在一個無向圖 G 中,若從頂點 $i$ 到頂點 $j$ 有路徑相連(當然從 $j$ 到 $i$ 也一定有路徑),則稱 $i$ 和 $j$ 是連通的。如果 G 是有向圖,那麼連線 $i$ 和j的路徑中所有的邊都必須同向。如果圖中任意兩點都是連通的,那麼
演算法學習筆記:母函式詳解
## 引言 **母函式**(Generating function,**生成函式**)是**組合數學**中一種重要的方法,這裡只對最簡單的普通母函式作簡單介紹。其主要思想是,把離散序列和**冪級數**對應起來。 先來看一個最經典的例子:給你1克、2克、3克、4克的砝碼各一枚,問稱出1~10克的方案分別有多
Spring學習筆記——Spring Scope(作用域)詳解
引言 在Spring學習筆記 —— 從IOC說起中,曾經提到過Spring中的Bean是根據Scope(作用域)來生成的,但是一直都沒有詳細解釋過,除了Singleton(單例)和prototype(原型)作用域之外,另外一種重要的作用域——使用者自定義
Spring IOC原始碼詳解之容器依賴注入
進入BeanWrapperImpl public class BeanWrapperImpl extends AbstractNestablePropertyAccessor implements BeanWrapper BeanWrapperImpl繼承了AbstractNestablePropert