Spring Tool Suite 3.9.1.RELEASE
我們在XML文件中配置bean時,bean的id用于標識容器,是唯一的。若id沒有指定,則Spring自動將全限定名作為bean的名字。id可以指定多個名字,名字之間可以用逗號、分號或空格分隔。class為類的全類名,由包名和類名組成。我們使用xml文件配置bean時,要求實體類必須要有一個無參構造方法,若沒有則會啟動報錯。
屬性注入方式,是通過setter方法為bean注入屬性。我們在bean的配置文件中使用property元素中的name屬性標識需要注入的bean屬性,然后在類中使用setXxx()的方法將屬性注入,因此name屬性的值必須和setter方法中大寫字母開頭的名字要一致。如使用setName2()方法,則配置文件中name屬性的值必須為name2。
上述步驟是通過屬性注入依賴的方式,下面我們講解通過構造器注入依賴的方式。通過構造方法來注入bean的屬性值或依賴對象,它保證了Bean實例在實例化后就可以使用 。構造器注入在<constructor-arg>元素里聲明屬性,沒有name屬性,按照構造方法默認的順序或指定順序來注入。如下圖所示,可以看到屬性注入的順序完全和構造方法傳參的順序一致。
我們編寫測試代碼,在測試代碼的main()方法中獲取Cat對象,并打印輸出該對象。ApplicationContext在初始化上下文時就實例化所有單例的的Bean,用于獲取Cat對象。打印輸出默認的是調用Cat類的toString()方法,因此在創建類時需要重寫toString()方法。
接下來我們在使用構造器注入時添加index屬性用于標識注入的順序,如下圖所示。
使用構造器注入屬性值可以指定參數的位置和參數的類型,用以區分重載的構造器。上述步驟指定了參數的位置,下面我們再為Cat方法創建一個有參構造,傳入4個參數,如下圖所示,而相應的bean的配置增加了type屬性,用于標識字段的類型。
我們在使用構造器注入時,不僅可以用value屬性,也可以使用value子元素。使用雙標記的value子元素,中間包裹的位置填入相應的值即可,如下圖所示。
如果我們在使用xml配置bean時,需要注入的屬性中含有特殊字符,那么直接將特殊字符寫在配置文件中是錯誤的。若字面值包含特殊字符,可以使用<![CDATA[]]>把字面值包裹起來,基本數據類型及其封裝類、String等類型都可以采取字面值注入的方式。
只有字面值包含特殊字符,才使用<![CDATA[]]>包裹起來。
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!