日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring思维导图(IOC篇)

發(fā)布時間:2023/12/15 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring思维导图(IOC篇) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

寫在前面

寫過java的都知道:所有的對象都必須創(chuàng)建;或者說:使用對象之前必須先創(chuàng)建。而使用ioc之后,你就可以不再手動創(chuàng)建對象,而是從ioc容器中直接獲取對象。

就好像我們無需考慮對象的銷毀回收一樣,因為java垃圾回收機制幫助我們實現(xiàn)了這個過程;而ioc則是讓我們無需考慮對象的創(chuàng)建過程,由ioc容器幫我們實現(xiàn)對象的創(chuàng)建、注入等過程。


Spring知識細(xì)節(jié).png

控制反轉(zhuǎn)


Spring ioc簡介.png

spring ioc容器

在Spring框架中的核心組件只有三個:Core、Context和Bean。它們構(gòu)建起了整個Spring的骨骼架構(gòu),沒有它們就不可能有AOP、Web等特性功能。


Spring 整體結(jié)構(gòu)圖.jpg

如果說在三個核心中再選出一個核心,那就非Bean莫屬了。可以說,Spring就是面向Bean的編程,Bean在Spring中才是真正的主角。

Spring為何如此流行?你會發(fā)現(xiàn)Spring解決了一個非常關(guān)鍵的問題,它可以讓你對對象之間的關(guān)系轉(zhuǎn)而用配置文件來管理,或者注解,也就是它的依賴注入機制。而這個注入關(guān)系在一個叫Ioc的容器中管理。Ioc容器就是被Bean包裹的對象。Spring正是通過把對象包裝在Bean中從而達到管理這些對象及做一些列額外操作的目的。


ioc容器.png
spring ioc初始化.png
spring ioc容器工作原理.jpg

核心組件協(xié)同工作


三大核心組件.png

BeanFactory與ApplacationContext的區(qū)別

IOC中最核心的接口是Beanfactory提供IOC的高級服務(wù),而ApplicationContext是建立在BeanFactory基礎(chǔ)之上提供抽象的面向應(yīng)用的服務(wù)。


BeanFactory 與ApplacationContext.png

3種注入方式

在Spring框架中,依賴注入(DI)的設(shè)計模式是用來定義對象彼此間的依賴。使用xml配置bean的情況下,它主要有兩種類型:

  • Setter方法注入
  • 構(gòu)造器注入

當(dāng)然,有了注解之后,使用注解的方式更加方便快捷。即自動裝配功能實現(xiàn)屬性自動注入(@autowire)。

寫到這里,讓我想起了最近在牛客網(wǎng)上看的一道選擇題了:

下面有關(guān)spring的依賴注入,說法錯誤的是?A、依賴注入通常有如下兩種:設(shè)置注入和構(gòu)造注入:B、構(gòu)造注入可以在構(gòu)造器中決定依賴關(guān)系的注入順序,優(yōu)先依賴的優(yōu)先注入C、當(dāng)設(shè)值注入與構(gòu)造注入同時存在時,先執(zhí)行構(gòu)造注入,再執(zhí)行設(shè)值注入D、設(shè)值注入是指IoC容器使用屬性的setter方法來注入被依賴的實例。這種注入方式比較簡單、直觀

牛客網(wǎng)給出的答案是選C,不過網(wǎng)友們好像對答案有不同的意見哈。查看網(wǎng)友評論及答案

原理解析

Spring的代碼還真是不好讀,分得太細(xì)了,文字也是難以描述出來,看了別人有關(guān)的博客,貼了好多代碼,畫了好多ER圖來描述關(guān)鍵接口或類之間的關(guān)系。這么一篇這么長文章下來,大家也未必會認(rèn)真讀代碼,看ER圖,干脆也不跟風(fēng)了。就貼了一點在我看來特關(guān)鍵的代碼,嘿嘿。

context的初始化過程

當(dāng)運行ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); 構(gòu)造方法ClassPathXmlApplicationContext(String configLocation)調(diào)用了this(new String[] {configLocation}, true, null);, 該構(gòu)造方法具體代碼如下。


ClassPathXmlApplicationContext構(gòu)造方法.jpg
refresh()方法.jpg
從時序圖來看啟動上述初始化

容器初始化時序圖.jpg


作者:java思維導(dǎo)圖
鏈接:http://www.jianshu.com/p/6b15246a48db
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

轉(zhuǎn)載于:https://www.cnblogs.com/wlsblog/p/7354788.html

總結(jié)

以上是生活随笔為你收集整理的Spring思维导图(IOC篇)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。