1. Spring是什么
開源的逝淹,用來簡化企業(yè)級應(yīng)用開發(fā)的應(yīng)用開發(fā)框架乡革。
注:a.簡化開發(fā): Spring框架對常用的api都做了封裝泣刹,比如對jdbc就做了一套封裝(Spring Jdbc),使用SpringJdbc訪問數(shù)據(jù)庫煌抒,就不再需要考慮如何獲取連接與關(guān)閉連接等操作了巫湘。
b.解耦: Spring幫我們管理對象之間的依賴關(guān)系(對象之間的耦合度降低了)装悲,這樣軟件的維護性得到提高。
c.集成其它框架:Spring可以很好地和其它的一些框架進行集成尚氛,這樣诀诊,使用這些框架就更方便了。
2. Spring容器
(1)什么是Spring容器?
Spring框架中的一個核心模塊阅嘶,用來管理對象属瓣。
注:管理對象:對象的創(chuàng)建、銷毀讯柔、初始化等等操作抡蛙,以及對象之間的依賴關(guān)系。
(2)如何啟動Spring容器?
step1.導(dǎo)包魂迄。 spring-webmvc
step2.添加Spring配置文件粗截。
step3.啟動容器。
(3)如何創(chuàng)建對象?
1)方式一 無參構(gòu)造器
step1.為類添加無參構(gòu)造器或者直接使用缺省構(gòu)造器捣炬。
step2.在配置文件當(dāng)中熊昌,添加bean元素。
step3.啟動容器湿酸,調(diào)用容器提供的一個方法(getBean)浴捆。
2)方式二 靜態(tài)工廠方法(了解)
3)方式三 實例工廠方法(了解)
(4)作用域
1)默認(rèn)情況下,對于某個bean元素稿械,容器只會創(chuàng)建一個實例选泻。
2)如果將作用域設(shè)置為"prototype",容器會創(chuàng)建多個實例美莫。
(5)生命周期相關(guān)的兩個方法
1)初始化
使用init-method屬性指定初始化方法页眯。
2)銷毀
使用destroy-method屬性指定銷毀方法。
注意:只有作用域為singleton時厢呵,銷毀方法才會執(zhí)行窝撵。
(6)延遲加載(了解)
1)默認(rèn)情況下
容器啟動之后,會將所有作用域為singleton的bean先創(chuàng)建好襟铭。
2)容器啟動之后碌奉,對于作用域為singleton的bean,不再創(chuàng)建(當(dāng)調(diào)用getBean方法時才會創(chuàng)建)
3.IOC和DI
1)什么是IOC (Inversion Of Controll 控制反轉(zhuǎn))?
對象之間的依賴關(guān)系由容器來建立短曾。
2)什么是DI(Dependency Injection 依賴注入)?
容器通過調(diào)用set方法或者構(gòu)造器來建立對象之間的依賴關(guān)系。
注:IOC是目標(biāo)赐劣,DI是手段嫉拐。
3)依賴注入的兩種方式
a.方式一 set方法注入
step1. 添加set方法。
step2. 在配置文件當(dāng)中魁兼,使用<property>來配置set方法注入婉徘。
step3. 啟動容器,調(diào)用getBean方法咐汞。
b.方式二 構(gòu)造器注入
step1. 添加相應(yīng)的構(gòu)造器
step2. 在配置文件當(dāng)中盖呼,使用<constructor-arg>來配置構(gòu)造器注入。
step3. 啟動容器化撕,調(diào)用getBean方法几晤。
4)自動裝配(了解)
a.容器默認(rèn)情況下,是不會自動裝配的植阴。
b.可以讓容器依據(jù)某些規(guī)則蟹瘾,自動建立對象之間的依賴關(guān)系(仍然需要調(diào)用set方法或者構(gòu)造器)。
注:自動裝配建議少用墙贱,如果要使用升酣,建議使用byName爹耗。