1. 程式人生 > >深入學習Spring框架之二構造器注入方式裝配Bean

深入學習Spring框架之二構造器注入方式裝配Bean

    這一節我們來看看怎麼使用Spring建立我們的Bean物件。

    容器是Spring的核心,Spring的容器有兩種型別:Bean工廠,由BeanFactory介面定義,是最簡單的容器;以及應用上下文,由ApplicationContext定義。Bean工廠對於大多數應用來說太低階了,因此應用上下文更為受歡迎。

    應用上下文又可以分為以下幾種型別:

        ClassPathXmlApplicationContext----從類路徑下的XML配置檔案載入上下文,把應用上下文定義檔案當作類資源

FileSystemXmlApplicationContext----讀取檔案系統下的XML配置檔案並載入上下文定義

XmlWebApplicationContext----讀取Web應用下的XML配置檔案並裝載上下文定義

    下面我們來應用Spring建立Bean物件,首先我們來模擬一個環境,G20峰會的晚會表演,據說很不賴,畫面直接可以做桌布

/**
 * 面向介面程式設計,表演者介面
 * @author liuyc
 *
 */
public interface Performer {
	public void perform();
}
/**
 * 歌手類
 * @author liuyc
 *
 */
@SuppressWarnings("all")
public class Singer implements Performer{
	
	private String song;
	
	private Instrument instrument;
	
	public Singer() {
	}

	public Singer(String song) {
		this.song = song;
	}
	
	public Singer(String song, Instrument instrument) {
		super();
		this.song = song;
		this.instrument = instrument;
	}

	@Override
	public void perform() {
		this.instrument.play(song);
		System.out.println("while singing ...");
	}
}
<?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">
	
	<bean id="singer"  class ="com.cm2easy.miki.example.chapter1.Singer"></bean>

</beans>
這樣我們就聲明瞭一個簡單Bean,在xml配置檔案中我們沒有進行任何多餘的配置,這個時候spring預設是呼叫類的預設構造器,所產生的結果與我們的傳統建立物件的方法是一樣的:
Singer singer = new Singer();
我們還可以呼叫有參的構造器宣告一個Bean:
<?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">
	
	<bean id="singer"  class ="com.cm2easy.miki.example.chapter1.Singer">
		<constructor-arg value="聽媽媽的話"></constructor-arg>
	</bean>

</beans>
這種構造器注入的方式相當於我們呼叫有參構造new一個物件,效果是一模一樣的:
Singer singer = new Singer("聽媽媽的話");
我們不僅可以像上面那樣通過構造器注入基本型別的變數,還可以通過構造器將物件的引用注入:
/**
 * 樂器介面
 * @author liuyc
 *
 */
public interface Instrument {
	public void play(String melodyName);
}
/**
 * 鋼琴類
 * @author liuyc
 *
 */
public class Piano implements Instrument{
	@Override
	public void play(String melodyName) {
		System.out.println("正在演奏" + melodyName);
	}
}
<?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">
	
	<bean id="singer"  class ="com.cm2easy.miki.example.chapter1.Singer">
		<constructor-arg value="聽媽媽的話"></constructor-arg>
		<constructor-arg ref="piano"></constructor-arg>
	</bean>
	<bean id="piano" class="com.cm2easy.miki.example.chapter1.Piano"></bean>
</beans>
如上所示,在呼叫public Singer(String song, Instrument instrument)構造器之前,先要宣告Instrument的物件,再通過構造器注入生命singer物件,這樣歌手不僅可以唱歌還可以演奏對應歌曲的鋼琴曲了


構造器注入的方式宣告Bean物件,無外乎上面的情況,掌握了以上配置要想通過構造器宣告物件就可以遊刃有餘了。





相關推薦

深入學習Spring框架構造注入方式裝配Bean

    這一節我們來看看怎麼使用Spring建立我們的Bean物件。     容器是Spring的核心,Spring的容器有兩種型別:Bean工廠,由BeanFactory介面定義,是最簡單的容器;以及應用上下文,由ApplicationContext定義。Bean工廠對於

深入學習Spring框架五通過工廠方法建立Bean

    前面我們介紹了,通過構造器的方式建立Bean物件,今天我們來講一下通過工廠方法來建立Bean。     有些時候,我們有必要將一些類設定為單例模式,比如說一個國家的最高領導人,再比如我們在銀行

深入學習Spring框架)- 註解配置

1.為什麼要學習Spring的註解配置?     基於註解配置的方式也已經逐漸代替xml。所以我們必須要掌握使用註解的方式配置Spring。  關於實際的開發中到底使用xml還是註解,每家公司有著不同的使用習慣。所以這兩種配置方式都需要掌握。  學習基於註解的IoC配置,首先得有一個認知,即註解配置和xml

Spring配置優化_構造注入+自動裝配

2014-05-16 09:01:08上課內容: 依賴注入的第二種注入方式:構造器注入  建立帶引數的構造方法,引數型別為注入類的型別 專案要先新增Spring支援; package com; public class Computer { private Host h

深入理解Spring AOP代理對象生成

gets code 網上 none work class als post 產生 深入理解Spring AOP之二代理對象生成 spring代理對象 上一篇博客中講到了Spring的一些基本概念和初步講了實現方

Spring的《XML顯式裝配bean通過構造注入Bean

本文主要講解兩點: 1.怎麼樣宣告一個bean 2.通過構造器注入bean 1. 怎麼樣宣告一個bean? 1) 建立一個類: package spring.ch1.topic5; public class Song {

深入學習Spring框架之一Spring的簡要概括

Java開發的春天 Spring框架最初的形成,來自於最初的一位Java領域的大牛-----Rod Jahnson。這位大牛所著的一本叫做《Expert One-on-One J2EE Desig

深入學習Spring框架(一)- 入門

1.Spring是什麼?   Spring是一個JavaEE輕量級的一站式開發框架。    JavaEE: 就是用於開發B/S的程式。(企業級)    輕量級:使用最少程式碼啟動框架,然後根據你的需求選擇,選擇你喜歡的模組使用。    重量級:早期有的EJB,開發一個HelloWorld程式都需要引入EBJ

深入學習Spring框架(三)- AOP面向切面

   1.什麼是AOP?   AOP為 Aspect Oriented Programming 的縮寫,即面向切面程式設計, 通過預編譯方式和執行期動態代理實現程式功能的統一維護的一種技術.。AOP是OOP的延續, 是函數語言程式設計的一種衍生範型。利用AOP可以對業務邏輯的各個部分進行隔離, 從而使得業

深入學習Spring框架(四)- 事務管理

1.什麼是事務?   事務(Transaction)是一個操作序列。這些操作要麼都做,要麼都不做,是一個不可分割的工作單位,是資料庫環境中的邏輯工作單位。事務是為了保證資料庫的完整性。例如:A給B轉賬,需要先減掉A的賬戶餘額再加到B的賬戶上,這兩個操作是一個整體,不可能扣掉A的錢不給B加上,或者只給B加沒有

Spring】淺談spring為什麼推薦使用構造注入

一、前言 ​ Spring框架對Java開發的重要性不言而喻,其核心特性就是IOC(Inversion of Control, 控制反轉)和AOP,平時使用最多的就是其中的IOC,我們通過將元件交由Spring的IOC容器管理,將物件的依賴關係由Spring控制,避免硬編碼所造成的過度程式耦合。

Spring 五、使用構造注入:實現constructor-arg標籤注入ConstructorArgument

第四周: 實現建構函式注入 引入ConstructorArgument 如何找到合適的構造器: ConstructorResolver //petstore-v3.xml <bean id="petStore" class="org.litesp

Spring框架中的三種注入方式

Type1 介面注入 我們常常藉助介面來將呼叫者與實現者分離。如:publicclass ClassA {   private InterfaceB clzB;   public init() {     Ojbect obj =     Class.forName(Conf

跟著剛哥學習Spring框架--Spring容器(

contain 系統 框架 blog 關系 文件路徑 mage 文件系統 技術分享 Spring容器 啟動Spring容器(實例化容器)   -- IOC容器讀取Bean配置創建Bean實例之前,必須對它進行實例化(加載啟動),這樣才可以從容器中獲取Bean的實例並使用

spring框架 IoC和DI(

九、依賴注入 9、1  屬性依賴注入 依賴注入方式:手動裝配 和 自動裝配 手動裝配:一般進行配置資訊都採用手動            ① 基於xml裝配:構造方法、setter方法 、 p標籤注入            ②  基於註解裝配:@autowrired 

spring學習-day2】IOC-DI-scope-setter和構造注入

【補充】 這是早就寫了的文章,如今有新的理解,想補充完成。 1.scope 2.IOC 3.DI 4.setter注入和構造器注入 5.init和destory 【打頭說明】 IOC說的是控制反轉,意思就是讓spring來建立物件,竟然讓spring來建立物件

1-10.Laravel框架利用查詢構造完成CURD()

DB類操作資料庫 DB門面(功能類) 按照MVC 的架構,對資料的操作應該放在 Model 中完成,但如果不使用Model,我們也可以用 laravel框架提供的 DB 類操作資料庫。而且,對於某些極其複雜的sql,用Model 已經很難完成,需要開發者自己手寫sql語句

深入學習jquery原始碼繼承框架的實現

深入學習jquery原始碼之繼承框架的實現 繼承框架的實現 /* Simple JavaScript Inheritance * By John Resig http://ejohn.org/ * MIT Licensed. */ // Inspired by base2 and Pr

深入學習jquery原始碼擴充套件jquery與次開發

深入學習jquery原始碼之jquery二次開發 jquery.js的設計與實現 (function (global, factory) { if (typeof module === "object" && typeof module.exports === "o

spring框架)——spring概述與spring的核心IOC

上面一節我們說了spring的體系和jar包的依賴關係,這節筆者主要詳解一下spring3.x  一、Spring概述 1、Spring是什麼? Spring是分層的Java SE/EE應用 full-stack輕量級開源框架,以IoC(Inverse Of Contro