1. 程式人生 > >Spring 框架基礎(03):核心思想 IOC 說明,案例演示

Spring 框架基礎(03):核心思想 IOC 說明,案例演示

本文原始碼:GitHub·點這裡 || GitEE·點這裡

一、IOC控制反轉

1、IOC容器思想

Java系統中物件耦合關係十分複雜,系統的各模組之間依賴,微服務模組之間的相互呼叫請求,都是這個道理。降低系統模組之間、物件之間、微服務的服務之間耦合度,是軟體工程核心問題之一。因為Spring框架中核心思想就是IOC控制反轉,用來實現物件之間的解耦。

2、控制反轉

  • 傳統方式

物件A如果想使用物件B的功能方法,在需要的時候建立物件B的例項,呼叫需要的方法,對物件B有主動的控制權。

  • IOC容器

當使用IOC容器之後,物件A和B之間失去了直接聯絡,物件A如果想使用物件B的功能方法,IOC容器會自動建立一個物件B例項注入到物件A需要的功能模組中,這樣物件A失去了主動控制權,也就是控制反轉了。

3、依賴注入

IOC給物件直接建立關係的動作,稱為DI依賴注入(Dependency Injection);依賴:物件A需要使用物件B的功能,則稱物件A依賴物件B。注入:在物件A中例項化物件B,從而使用物件B的功能,該動作稱為注入。

二、IOC容器案例

1、買票乘車場景

  • 簡單乘車類
public class ByBus {
    // 方式一:直接例項化
    // private BuyTicket buyTicket = new BuyTicket () ;

    private BuyTicket buyTicket ;
    public BuyTicket getBuyTicket() {
        return buyTicket;
    }
    public void setBuyTicket(BuyTicket buyTicket) {
        this.buyTicket = buyTicket;
    }
    public void takeBus (){
        String myTicket = this.getBuyTicket().getTicket() ;
        if (myTicket.equals("ticket")){
            System.out.println("乘車");
        }
    }

}
  • 簡單買票類
public class BuyTicket {
    public String getTicket (){
        return "ticket" ;
    }
}

2、Spring配置檔案

這裡用過Spring配置檔案,給乘車類中,注入買票類,進而完成完整動作。

<bean id="byBus" class="com.spring.mvc.entity.ByBus">
    <property name="buyTicket" ref="buyTicket" />
</bean>
<bean id="buyTicket" class="com.spring.mvc.entity.BuyTicket"/>

3、測試程式碼

public class Test1 {
    @Test
    public void test01 (){
        ApplicationContext context = 
        new ClassPathXmlApplicationContext("/ioc-contain-01.xml");
        ByBus byBus = (ByBus) context.getBean("byBus");
        byBus.takeBus();
    }
}

三、核心API總結

針對上面用到的幾個核心API進行說明,後續持續總結。

1、BeanFactory

這是一個工廠,用於生成任意bean。採取延遲載入,第一次getBean時才會初始化Bean。

2、ApplicationContext

是BeanFactory的子介面,功能更強大。(國際化處理、事件傳遞、Bean自動裝配、各種不同應用層的Context實現)。當配置檔案被載入,就進行物件例項化。

3、ClassPathXmlApplicationContext

用於載入classpath(類路徑、src)下的xml載入xml執行時位置:/WEB-INF/classes/...xml

4、FileSystemXmlApplicationContext

用於載入指定碟符下的xml載入xml執行時位置:/WEB-INF/...xml,通過ServletContext.getRealPath()獲得具體碟符配置。

四、原始碼地址

GitHub·地址
https://github.com/cicadasmile/spring-mvc-parent
GitEE·地址
https://gitee.com/cicadasmile/spring-mvc-parent

相關推薦

Spring 框架基礎(03)核心思想 IOC 說明案例演示

本文原始碼:GitHub·點這裡 || GitEE·點這裡 一、IOC控制反轉 1、IOC容器思想 Java系統中物件耦合關係

Spring 框架基礎(01)核心元件總結基礎環境搭建

本文原始碼:GitHub·點這裡 || GitEE·點這裡 一、Spring框架 1、框架簡介 Spring是一個開源框架,框

Spring 框架基礎(02)Bean的生命週期作用域裝配總結

本文原始碼:GitHub·點這裡 || GitEE·點這裡 一、裝配方式 Bean的概念:Spring框架管理的應用程式中,由

Spring 框架基礎(06)Mvc架構模式簡介執行流程詳解

本文原始碼:GitHub·點這裡 || GitEE·點這裡 一、SpringMvc框架簡介 1、Mvc設計理念 MVC是一種軟體設計典範,用一種業務邏輯、資料、介面顯示分離的方法組織程式碼,將業務邏輯聚集到一個元件裡面,在改進和個性化定製介面及使用者互動的同時,不需要重新編寫業務邏輯,MVC分層有助於管理和架

Spring 框架基礎(05)事務管理機制和實現方式

本文原始碼:GitHub·點這裡 || GitEE·點這裡 一、Spring事務管理 1、基礎描述 Spring事務管理的本質就是封裝了資料庫對事務支援的操作,使用JDBC的事務管理機制,就是利用java.sql.Connection物件完成對事務的提交和回滾。 Connection conn = Drive

JavaEE基礎(03)Http請求詳解握手揮手流程簡介

本文原始碼:GitHub·點這裡 || GitEE·點這裡 一、Http協議簡介 1、概念說明 HTTP超文字傳輸協議,是用於從全球資訊網伺服器傳輸超文字到本地瀏覽器的傳送協議,基於TCP/IP通訊協議來傳遞資料:HTML檔案、圖片、查詢資料等。HTTP協議基於客戶端-服務端架構模式。瀏覽器作為HTTP客

使用Spring框架入門一基於XML配置的IOC/DI的使用

測試結果 plugins rac prepare lombok ray instance private mls 一、Spring框架   1、方法一:逐項導入基礎依賴包:     spring-core、spring-beans、spring-context、s

使用Spring框架入門二基於註解+XML配置的IOC/DI的使用

bsp hot sources hierarchy osi pan ioc clas operate 一、簡述 本文主要講使用註解+xml配合使用的幾種使用方式。基礎課程請看前一節。 二、步驟 1、為Pom.xml中引入依賴:本例中使用的是spring-context

Spring框架基礎(二)——依賴注入DI/IOC

一,手動進行值注入(bean) <!-- 例項化類時,呼叫類中屬性的set方法並將值傳給形參 --> <bean name="bookinfo" class="com.lanou.fuxi.domain.Bookinfo"&

spring核心思想--ioc控制反轉

一核心概念     控制反轉:將bean的生成交給容器,程式可以從容器中獲取指定的bean。 個人理解:此優勢也是spring能夠流行併成為java主流框架的主要原因,java是幫助java程式設計師以物件的方式管理 記憶體,而spring則是一個管理物件的框架。如果使用spring,在開

三分鐘輕松了解Spring框架基礎知識

xmla 深入 dao reference inject ace eve con 說過 做為一個合格的Java開發人員,你一定聽說過Spring框架,雖然會應用,但卻未必能夠深入理解框架的原理,只是像其它人一樣,泛泛的只是停留在理解的層面。小編會帶著大家一步步了解Sprin

Linux基礎03配置區域網

區域網配置 規劃 192.168.91.2 閘道器 192.168.91.1 主機虛擬網絡卡 三臺虛擬機器ip及名稱: 192.168.91.7 hadoop01 192.168.91.8 hadoop02 192.168.91.9 hadoop03 說明:以上各項需在同一網段,前三位相

spring框架 多種注入方法+註釋實現IOC AOP

一,多種方式實現依賴注入 1.構造注入 構造注入是一種高內聚的體現,特別是針對有些屬性需要在物件在建立時候賦值,且後續不允許修改(不提供setter方法) <bean id="demo3" class="com.bdqn.cn.Demo">

Spring框架基礎

Spring是什麼 一個輕量級的企業應用開發框架 非侵入式的框架 應用對框架的依賴很小,很多時候應用程式碼都可以使用POJO風格。 POJO:沒有從任何類繼承、也沒有實現任何介面,更沒有被其它框架侵入的java物件。 優點 :低耦合(類與類之間的聯絡) 高度可配置

Spring框架基礎(一)基本介紹

spring 框架的基本核心構成 IOC Inversion 0f Control 控制反轉 是Spring框架的核心 DAO 資料訪問物件模組 Spring 對JDBC訪問資料庫的封裝 MVC 是Spring對MVC架構以及web部分的支援 AOP

Spring框架基礎(三)Spring+Mybatis整合

一,配置檔案 <!-- 開啟自動掃描 --> <context:component-scan base-package="com.lanou.test.*" /> <!-- 資料連線池 --> <!-- 使用的是阿里的連線池,db

spring框架概述及六大核心功能介紹

元件/框架設計 侵入式設計                    引入了框架,對現有的類的結構有影響;即需要實現或繼承某些特定類。                    例如:Struts框架 非侵入式設計          引入了框架,對現有的類結構沒有影響。 例如:Hi

《深入理解Spark核心思想與原始碼分析》(第2章)

《深入理解Spark:核心思想與原始碼分析》一書第一章的內容請看連結《第1章 環境準備》 本文主要展示本書的第2章內容: Spark設計理念與基本架構 “若夫乘天地之正,而御六氣之辯,以遊無窮者,彼且惡乎待哉?” ——《莊子·逍遙遊》 n本章導讀: 上一章,介紹了Spark環境的搭建,為方便讀

spring框架基礎學習

一、背景        在Spring事務:程式設計式事務管理這一篇中簡單的介紹了Spring中的程式設計式事務管理,本篇介紹下Spring中宣告式事務管理。 二、宣告式事務管理 1、Spring中宣告式事務管理概述        Spring中的宣告式事務管理在底層是建立在AOP的基礎上的。其本質

Spring框架面試題AOP是什麼?都用它做什麼?

一:AOP:面向切面程式設計             核心原理:使用動態代理的設計模式在執行方法前後或出現異常做加入相關邏輯。 二:我們主要使用AOP來做:         1、事務處理:執行方法前:開始事務、執行完成後關閉事務、出現異常後回滾事務         2、許