Spring控制翻轉中的依賴注入方式
#依賴注入是指物件之間關係的控制權由應用程式碼中轉到外部容器。 Spring框架主要提供了Set注入和構造注入兩種依賴注入方式。
1:Set注入指的是定義在接受注入的類別中要被注入的類型的一個set方法,並且在參數中定義需要注入的元素。 Set注入式一種組裝Bean屬性的直接方法,但Set注入的一個缺點就是它假設了所有的可變屬性都可以透過set方法存取到,無法清楚地表示哪些屬性是必須的,哪些屬性是可選的。
2:建構注入是在接收注入的類別中定義一個建構方法,並在建構方法中定義需要注入的參數。構造注入方式的優點是透過建構方法來強制依賴關係。
以下介紹兩種方式的用法:
一:在Myeclipse中(筆者使用的是Myeclipse10版本)新建一個專案(java project或web project都可)
二:右鍵專案- MyEclipse - Add Spring Capabilities(新增Spring支援),選擇3.0版本並新增引用核心類函式庫,點選下一步
三:選擇新建立一個spring bean 設定檔放到專案src目錄下。
四:點擊下一步,指定Hibernate 設定頁,直接默認,點擊完成即可。
五:新類別HelloWorld.java
#
package com.xiami.spring; public class HelloWorld { private String str; /** * 默认构造方法 */ public HelloWorld() { } /** * 用来进行构造注入的构造方法 * * @param str */ public HelloWorld(String str) { this.str = str; } /** * 用来进行Set注入的方法 * @param str */ public void setStr(String str) { this.str = str; } /** * 输出字符串的方法 */ public void sayHello() { System.out.println(str); } }
#六:新測試類別Test .java
package com.xiami.spring; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //载入spring配置文件 BeanFactory bFactory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml")); HelloWorld helloWorld = (HelloWorld) bFactory.getBean("helloService"); helloWorld.sayHello(); } }
七:此時專案結構如下
八:開啟applicationContext.xml文件,進行新增bean配置
以下是兩種方式來加入bean:
#1:採用Set注入方式的Bean類別的設定
右鍵點選applicationContext.xml的編輯介面- Spring - new bean 開啟Bean精靈窗口,填入Bean Id(自訂命名和Test. java中getBean("???")對應。精靈視窗填入Name 對應HelloWorld.java中的屬性名稱,Spring Type 選擇value,type選擇String,Value 隨便填值。 :儲存applicationContext.xml, 新增bean後,設定檔多了紅色標記的部分,讀者可以執行Test.java。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!-- 使用Set方式注入 --> <!-- <span style="color:#ff0000;"><bean id="helloService" class="com.xiami.spring.HelloWorld" abstract="false" lazy-init="default" autowire="default"> <property name="str"> <value type="java.lang.String">hello world</value> </property> </bean></span> --> <!-- 使用构造方法方式注入 <bean id="helloService" class="com.xiami.spring.HelloWorld" abstract="false" lazy-init="default" autowire="default"> <constructor-arg> <value type="java.lang.String">构造方法注入方式</value> </constructor-arg> </bean> --> </beans>
#2:採用建構注入方式的Bean類別的設定
在以上Set方式的Bean Wizard(Bean 精靈)窗口,不選擇Properties選項卡,變成Constructor Args選項卡。 #造參數。不允許有多個id相同的bean。
以上是實例詳解Spring 兩種注入的方式(Set和構造)的詳細內容。更多資訊請關注PHP中文網其他相關文章!