首頁 > Java > java教程 > 實例詳解Spring 兩種注入的方式(Set和構造)

實例詳解Spring 兩種注入的方式(Set和構造)

PHP中文网
發布: 2017-06-22 14:49:35
原創
1968 人瀏覽過

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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板