閱讀目錄
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
測試方法
輸出結果