javascript
Spring思维导图,让Spring不再难懂(ioc篇)
轉(zhuǎn)載自?Spring思維導(dǎo)圖,讓Spring不再難懂(ioc篇)
寫過(guò)java的都知道:所有的對(duì)象都必須創(chuàng)建;或者說(shuō):使用對(duì)象之前必須先創(chuàng)建。而使用ioc之后,你就可以不再手動(dòng)創(chuàng)建對(duì)象,而是從ioc容器中直接獲取對(duì)象。
就好像我們無(wú)需考慮對(duì)象的銷毀回收一樣,因?yàn)閖ava垃圾回收機(jī)制幫助我們實(shí)現(xiàn)了這個(gè)過(guò)程;而ioc則是讓我們無(wú)需考慮對(duì)象的創(chuàng)建過(guò)程,由ioc容器幫我們實(shí)現(xiàn)對(duì)象的創(chuàng)建、注入等過(guò)程。
控制反轉(zhuǎn)
spring ioc容器
在Spring框架中的核心組件只有三個(gè):Core、Context和Bean。它們構(gòu)建起了整個(gè)Spring的骨骼架構(gòu),沒(méi)有它們就不可能有AOP、Web等特性功能。
如果說(shuō)在三個(gè)核心中再選出一個(gè)核心,那就非Bean莫屬了。可以說(shuō),Spring就是面向Bean的編程,Bean在Spring中才是真正的主角。
Spring為何如此流行?你會(huì)發(fā)現(xiàn)Spring解決了一個(gè)非常關(guān)鍵的問(wèn)題,它可以讓你對(duì)對(duì)象之間的關(guān)系轉(zhuǎn)而用配置文件來(lái)管理,或者注解,也就是它的依賴注入機(jī)制。而這個(gè)注入關(guān)系在一個(gè)叫Ioc的容器中管理。Ioc容器就是被Bean包裹的對(duì)象。Spring正是通過(guò)把對(duì)象包裝在Bean中從而達(dá)到管理這些對(duì)象及做一些列額外操作的目的。
核心組件協(xié)同工作
BeanFactory與ApplacationContext的區(qū)別
IOC中最核心的接口是Beanfactory提供IOC的高級(jí)服務(wù),而ApplicationContext是建立在BeanFactory基礎(chǔ)之上提供抽象的面向應(yīng)用的服務(wù)。
3種注入方式
在Spring框架中,依賴注入(DI)的設(shè)計(jì)模式是用來(lái)定義對(duì)象彼此間的依賴。使用xml配置bean的情況下,它主要有兩種類型:
- Setter方法注入
- 構(gòu)造器注入
當(dāng)然,有了注解之后,使用注解的方式更加方便快捷。即自動(dòng)裝配功能實(shí)現(xiàn)屬性自動(dòng)注入(@autowire)。
寫到這里,讓我想起了最近在牛客網(wǎng)上看的一道選擇題了:
下面有關(guān)spring的依賴注入,說(shuō)法錯(cuò)誤的是?A、依賴注入通常有如下兩種:設(shè)置注入和構(gòu)造注入:B、構(gòu)造注入可以在構(gòu)造器中決定依賴關(guān)系的注入順序,優(yōu)先依賴的優(yōu)先注入C、當(dāng)設(shè)值注入與構(gòu)造注入同時(shí)存在時(shí),先執(zhí)行構(gòu)造注入,再執(zhí)行設(shè)值注入D、設(shè)值注入是指IoC容器使用屬性的setter方法來(lái)注入被依賴的實(shí)例。這種注入方式比較簡(jiǎn)單、直觀牛客網(wǎng)給出的答案是選C,不過(guò)網(wǎng)友們好像對(duì)答案有不同的意見(jiàn)哈。查看網(wǎng)友評(píng)論及答案
原理解析
Spring的代碼還真是不好讀,分得太細(xì)了,文字也是難以描述出來(lái),看了別人有關(guān)的博客,貼了好多代碼,畫了好多ER圖來(lái)描述關(guān)鍵接口或類之間的關(guān)系。這么一篇這么長(zhǎng)文章下來(lái),大家也未必會(huì)認(rèn)真讀代碼,看ER圖,干脆也不跟風(fēng)了。就貼了一點(diǎn)在我看來(lái)特關(guān)鍵的代碼,嘿嘿。
context的初始化過(guò)程
當(dāng)運(yùn)行ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");?構(gòu)造方法ClassPathXmlApplicationContext(String configLocation)調(diào)用了this(new String[] {configLocation}, true, null);, 該構(gòu)造方法具體代碼如下。
從時(shí)序圖來(lái)看啟動(dòng)上述初始化
總結(jié)
以上是生活随笔為你收集整理的Spring思维导图,让Spring不再难懂(ioc篇)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 安卓经营游戏破解版(安卓经营游戏)
- 下一篇: gradle idea java ssm