spring學習總結(一)_Ioc基礎(上)

2020-12-15 計算機java編程

閱讀目錄

spring概述Ioc基礎使用XML配置方式實現IOC最近經歷了許許多多的事情,學習荒廢了很久。自己的目標成了擺設。現在要奮起直追了。最近發現了張果的博客。應該是一個教師。看了他寫的spring系列的博客,寫的不錯。於是本文的內容參考自他的博客,當然都是手打書寫。由於我感覺他寫的博客篇幅過長。我根據我的習慣進行拆分學習。而且他的文章一系列很清楚。也值得我去學習。自己寫博客就零零散散。不是很系統。

spring概述

spring可以做很多事情,它為企業級開發提供了豐富的功能。但是這些功能的底層都依賴於它的兩個核心特性,控制反轉(IOC)和面向切面(AOP)、本篇文章主要介紹IOC。

現在 springboot 和spring cloud十分火爆,還是有必要看看兩者之間的關係的

Spring Boot 是 Spring 的一套快速配置腳手架,可以基於Spring Boot 快速開發單個微服務,Spring Cloud是一個基於Spring Boot實現的雲應用開發工具;Spring Boot專注於快速、方便集成的單個微服務個體,Spring Cloud關注全局的服務治理框架;Spring Boot使用了約束優於配置的理念,很多集成方案已經幫你選擇好了,能不配置就不配置,Spring Cloud很大的一部分是基於Spring Boot來實現,Spring Boot可以離開Spring Cloud獨立使用開發項目,但是Spring Cloud離不開Spring Boot,屬於依賴的關係

Ioc基礎

控制反轉IOC是一種設計思想,DI(依賴注入)是實現IOC的一種方法。(下面的這張圖畫的太好了)

沒有IOC的程序中我們使用面向對象編程對象的創建於對象間的依賴關係完全硬編碼在程序中,對象的創建由程序自己控制。控制反轉後將對象的創建轉移給第三方。IOC是spring框架的核心內容,使用多種方式完美的實現了IOC,可以使用xml配置,也可以使用註解,新版本的spring可以零配置實現IOC。

使用XML配置方式實現IOC

創建maven項目pom文件如下

使用無參構造方法創建對象

新建一個Music類

resources文件夾下新建music.xml

測試類

運行結果

使用有參構造方法創建對象

Person

Student

student.xml

測試類

輸出

通過屬性賦值

Animal

animal.xml

測試

輸出結果

對象引用

Tyre

Car

測試

輸出結果

對象作用域

在大多數情況下,單例bean是很理想的方案。初始化和垃圾回收對象實例所帶來的的成本只留給一些小規模任務,在這些任務中,讓對象保持無狀態並且在應用中反覆重用這些對象可能並不合理。在這種情況下,將class聲明為單例的bean會被汙染,稍後重用的時候會出現意想不到的問題。 -《spring實戰》

Spring定義了多種作用域,可以基於這些作用域創建bean,包括:

1、spring中默認是單例的,我們通過之前的代碼演示下

測試

輸出結果:true

這樣驗證了從容器中取回的對象默認是單例的。

2、設置成Prototype

測試

輸出結果:false

延遲初始化bean

ApplicationContext實現的默認行為是在啟動時將所有的singleton bean 提前進行實例化。這樣配置中或者運行環境的錯誤就會立刻發現。如果你想延遲初始化。可以在xml中進行配置

測試

大家自己運行後發現,確實並不是啟動後就加載的。

回調方法

Student

student.xml

測試方法

輸出結果

相關焦點

  • 談談SpringFramework與IoC依賴查找
    SpringFramework發展史在Spring技術之前,J2EE興起,當時的J2EE學習成本極高,開發速度慢,開發出來的程序性能消耗也高,已經跟不上當時應用程式的需要。IOC依賴查找基礎框架搭建創建Maven模塊,這裡以ioc-learning為例<dependency>    <groupId>org.springframework</groupId>
  • Java 第一大框架:Spring 的 IoC 跟 AOP 雛形如何實現?
    >Spring FrameworkSpring BootSpring Cloud常規所說的 Spring 框架就是 Spring Framework,大約20個模塊,主要包括:Core Container(核心容器)1、Core 2、Beans 3、Context4、Expression Language (「SpEL」)Core 和 Beans 是框架的基礎
  • Spring5.0源碼學習系列之Spring AOP簡述
    在對應用都不熟悉之前就去學習源碼,肯定是很難理解的,所以本文先不描述源碼的實現,先通過本篇博客了解熟悉Spring AOP,然後再學習源碼1、什麼是AOP技術?程式語言的擴展實現編譯過程無需單獨的編譯過程除非設置了LTW,否則需要AspectJ編譯器(ajc)織入時機動態代理,在運行時織入靜態織入,在編譯過程織入,它的織入時機可以是:compile-time(編譯期)、post-compile(編譯後)、load-time(JVM類加載器加載時候)功能基本的方法織入可以編織欄位,方法,構造函數,靜態初始值設定項,最終類/方法等…範圍只能作用於Spring容器管理的bean上可以作用於所有領域對象上實施性能比
  • 【232期】面試官:Spring的 IOC 容器比New對象究竟好在哪?
    來源:zhihu.com/question/23277575/answer/24259844ioc也就是說,甲方要達成某種目的不需要直接依賴乙方,它只需要達到的目的告訴第三方機構就可以了,比如甲方需要一雙襪子,而乙方它賣一雙襪子,它要把襪子賣出去,並不需要自己去直接找到一個賣家來完成襪子的賣出。它也只需要找第三方,告訴別人我要賣一雙襪子。
  • 深入理解-Spring-之源碼剖析IOC(一)
    spirng的 release  版本至今已經到了 5.0.3,和最初的 interface21 已經有了翻天復地的變化,現在也有了springboot, springcloud,儼然一個龐大的spring家族,想分析源碼的我們該從哪裡下手呢?萬劍歸宗,始於一處。
  • 【Spring框架】之IoC控制反轉
    今天開一篇章專門研究Spring框架的相關知識,希望能夠由淺入深,把Spring最基礎最應該掌握的知識梳理一遍。
  • Spring-mvc的原理講的不太好?那我手寫來解釋下吧——>面試官
    { continue; } }6、initHandlerMapping方法for (Entry<String, Object> entry: iocMap.entrySet()) { Class<?
  • 史上最全spring boot實戰文檔,吃透這些,面試幹掉80%對手
    SpringBoot的意義在於它繼承了Spring的過去優點,ioc,aop,springmvc,而且快速啟動伺服器,快速開發單個微服務。最大的重要性是:springcloud是一個基於springboot實現的一系 列框架的集合,用來提供全局的服務治理方案。springcloud要基於springboot來實現,離不開springboot。
  • Spring框架IOC和AOP簡介
    是一個輕量級的控制反轉和面向切面的容器框架◎從大小和開銷方面而言Spring都是輕量級的◎通過控制反轉的技術達到鬆耦合的目的◎提供了面向切面編程的豐富支持,允許通過分離應用的業務邏輯與系統級服務進行內聚性的開發◎包含並管理應用對象的配置和生命周期,這個意義上是一種容器
  • Java Web系列:Spring MVC基礎
    1.Web MVC基礎MVC的本質是表現層模式,我們以視圖模型為中心,將視圖和控制器分離出來。就如同分層模式一樣,我們以業務邏輯為中心,把表現層和數據訪問層代碼分離出來是一樣的方法。框架只能在技術層面上給我們幫助,無法在思考和過程上幫助我們,而我們很多人都不喜歡思考和嘗試。
  • Spring常用註解——JAVA成長之路
    作用:調用無參構造創建一個bean對象,並把對象存入spring的IOC容器,交由spring容器進行管理。相當於在xml中配置一個bean。屬性:value:指定bean的id。1.5 作用:用於把當前方法的返回值作為bean對象存入spring的ioc容器中屬性:name:用於指定bean的id。
  • 基於Spring Boot和Spring Cloud實現微服務架構學習
    原文地址:http://blog.csdn.net/enweitech/article/details/52582918看了幾周spring相關框架的書籍和官方demo,是時候開始總結下這中間的學習感悟。首先,最想說的是,當你要學習一套最新的技術時,官網的英文文檔是學習的最佳渠道。
  • 圖解Spring解決循環依賴,認清IOC!
    小Hub領讀:Spring框架是所有java程式設計師都必須要懂的框架,都說ioc是核心,你知道如何解決循環依賴的問題麼?看看這篇文章!
  • 阿里P8架構師整理總結:Spring+SpringBoot+SpringCloud技術文檔
    第2部分在此基礎上介紹如何使用Spring構建Web應用程式。第3部分告別前端,介紹如何在應用程式的後端使用Spring。第4部分描述如何使用Spring與其他的應用和服務進行集成。這一章也為後面各章提供基礎,在後面讀者將會使用AOP來提供聲明式服務,如事務、安全和緩存。在第2部分中,讀者將會看到如何使用Spring來構建Web應用程式。第5章介紹使用Spring MVC的基礎知識,這是Spring中的基礎Web框架。讀者將會看到如何編寫控制器來處理請求,並使用模型數據產生響應。
  • Spring事務基礎
    為了更加全面地學習,所以我就匯總一下Spring事務的知識點,有什麼不對或者補充的,大家記得留言告訴我哈。為什麼要事務關於事務的由來,我就不舉例子了,很多人第一反應就是去銀行存錢(然而我是用花唄的)的操作了。
  • Java Web系列:Spring依賴注入基礎
    一、Spring簡介1.Spring簡化Java開發Spring Framework是一個應用框架,框架一般是半成品,我們在框架的基礎上可以不用每個項目自己實現架構、基礎設施和常用功能性組件,而是可以專注業務邏輯。因此學習Spring Framework在架構和模式方面的結構和原理,對我們在架構和模塊級別的理解幫助極大。
  • .net core+Spring Cloud學習之路 一
    現在明白了只有不斷的學習才能不被淘汰,只有不斷的學習才能拿到更高的工資。  言歸正傳,在今早發現張隊在元旦前的博客「年末展望:Oracle 對 JDK收費和.NET Core 給我們的機遇」,說明了以後.net core會越來越好,而我本人在2017年的時候開始接觸過.net core的時候,就沒有放棄過對.net core的學習,現在覺得微服務是個不錯的方向,而自己也在學習這塊的東西,所以寫個博客記錄一下自己的學習的筆記。
  • 一文搞懂 Spring JPA
    JPA 在充分吸收了現有 Hibernate,TopLink,JDO 等ORM框架的基礎上發展而來的,具有易於使用,伸縮性強等優點。從上面的解釋中我們可以了解到JPA 是一套規範,而類似 Hibernate,TopLink,JDO 這些產品是實現了 JPA 規範。了解了什麼是 JPA,我們來看看本文的主角——spring data jpa。
  • 教妹學Java:Spring基礎篇
    從兩位偶像的年紀上,你就可以斷定我的碼齡至少在 10 年以上,但實話實說,我一直堅信自己只有 18 歲,因為我挺好學的。本篇文章就打算通過我和三妹對話的形式來學一學「Spring 的基礎」。教妹學 Java,沒見過這麼放肆的標題吧?「語不驚人死不休」,沒錯,本篇文章的標題就是這麼酷炫,不然你怎麼會點進來?
  • 學習學習SpringSecurity
    ;import org.springframework.context.annotation.Configuration;import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder