javascript
Spring原理简述
一、什么是Spring容器?
Spring容器,也稱Spring Ioc容器或bean容器,是Spring框架的核心,Srping容器對(duì)很多人來說是比較抽象難以理解的;
1、從概念層面講,對(duì)象的創(chuàng)建、初始化以及銷毀的整個(gè)生命周期都交由Spring容器去管理,大大減少了開發(fā)的工作量;
2、從代碼層面講,一個(gè)Spring容器就是一個(gè)實(shí)現(xiàn)了ApplicationContext接口的類的一個(gè)實(shí)例,即一個(gè)Spring容器就是一個(gè)AlicaitonContext(對(duì)象)
如上圖,context就是創(chuàng)建的一個(gè)Spring容器,容器里裝載著applicationContext.xml文件中配置的所有對(duì)象。
二、Spring容器是如何管理對(duì)象的
首先先介紹一下兩個(gè)概念:IOC(控制反轉(zhuǎn))、DI(依賴注冊(cè))。
IOC:將對(duì)象的創(chuàng)建、初始化和銷毀的整個(gè)生命周期都交給容器去做,而不是再有程序員自己去new了,所以稱之為控制反轉(zhuǎn),這個(gè)概念顧名思義很好理解,這也與上面介紹Spring容器的概念呼應(yīng)。
DI:Spring在啟動(dòng)的時(shí)候會(huì)實(shí)例化所需要的類,這里以實(shí)例化A類為例,若存在A類依賴于B類的情況,在實(shí)例化A對(duì)象的過程中會(huì)首先實(shí)例化B類,再實(shí)例化A類,依賴傳入A類的方式必須是通過A類的構(gòu)造函數(shù),因此A類在實(shí)例化的過程中會(huì)接收并保存依賴的對(duì)象。
三、SpringBoot中創(chuàng)建bean的幾種方式
不同于Spring框架中bean的配置都是在xml中進(jìn)行的,比較繁瑣,springboot中主要采用注解的方式實(shí)現(xiàn)bean的創(chuàng)建
1、注解形式:@Component、@Service、@Repository、@Controller
Spring運(yùn)行時(shí),容器會(huì)自動(dòng)掃描加載被這些注解修飾的類,自動(dòng)生成bean,并保存到Spring容器中
2、@Bean形式:配合@Configuration注解創(chuàng)建bean
@Configuration public class BeanLoadConfig {@Beanpublic ConfigDemoBean configDemoBean() {return new ConfigDemoBean();} }@Configuration相當(dāng)于xml文件中的beans標(biāo)簽,@Bean相當(dāng)于bean標(biāo)簽,方法名相當(dāng)于bean標(biāo)簽中的id,方法的返回值注入到sprig容器中,相當(dāng)于class的一個(gè)實(shí)例。
具體可參考該博文,簡(jiǎn)單易懂:https://blog.csdn.net/luzhensmart/article/details/90666380
四、Springboot中bean的使用方式
上面講到了Springboot中bean的創(chuàng)建過程,下面就將如何在項(xiàng)目中使用bean。
1、使用@AutoWired和@Resource注解實(shí)現(xiàn)自動(dòng)裝配,如下圖所示:
被@Controller修飾的CaseManagerController類在實(shí)例化為bean對(duì)象的過程中需要先對(duì)依賴CoreAutoTestCase類進(jìn)行實(shí)例化,CoreAutoTestCase類實(shí)例化生成bean后,通過@Autowired或@Resource注解,裝配注入到當(dāng)前的bean對(duì)象中,也就是說CaseManagerController類實(shí)例化bean對(duì)象中保存有CoreAutoTestCase類的實(shí)例化bean對(duì)象信息。因?yàn)樵诒?#64;controller修飾的類中幾乎是不存在構(gòu)造函數(shù)的,我們上一章節(jié)講到依賴只能通過構(gòu)造函數(shù)注入到當(dāng)前的bean中,因此@AutoWired和@Resource注解也相當(dāng)于起到了一個(gè)這樣的一個(gè)構(gòu)造函數(shù)的作用,下面我們就要將通過構(gòu)造函數(shù)的方式使用bean對(duì)象了。
2、構(gòu)造方法:就是在構(gòu)造方法中傳入Bean對(duì)象來初始化
@Controller public class CaseManagerController {private CoreAutoTestCase coreAutoTestCase;public CaseManagerController(CoreAutoTestCase coreAutoTestCase){this.coreAutoTestCase = coreAutoTestCase;}.................原博文鏈接:http://www.54gwz.cn/article/1591175285
-----------未完,待補(bǔ)充。
總結(jié)
以上是生活随笔為你收集整理的Spring原理简述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux服务器tomcat部署war包
- 下一篇: Springboot使用bean方式详解