#Spring 是什么?
? ? Spring 是一個(gè)輕量級(jí)的 DI / IoC 和 AOP 容器的開(kāi)源框架。
? ? 優(yōu)點(diǎn):
? ? 1)方便解耦,簡(jiǎn)便開(kāi)發(fā)。
? ? 2)支持AOP編程
# spring? 體系結(jié)構(gòu)
1、data access、
2、web、
3、AOP、
4、core container、
5、test
## core container? 核心容器
? ? 4大核心:
? ? 1)beans? beans 容器
? ? 2)core 核心
? ? 3) context? 上下文
? ? 4)expression? 表達(dá)式
# DI、IOC、AOP
## DI:依賴注入
? ? DI為實(shí)現(xiàn)IOC思想做支持。
? ? 依賴注入有三種方式 1、屬性注入? 2、構(gòu)造器注入 3、工廠注入? 主要是 1和 2。
? ? 如果一個(gè)對(duì)象依賴于其它的對(duì)象,此時(shí)就需要注入被依賴的對(duì)象,例如:service 依賴與dao, 此時(shí)需要在service的bean中注入(ref) dao。
##一些名詞
? ? 1. property: 用于進(jìn)行屬性注入
? ? ? ? 1) name :bean的屬性名稱,通過(guò)setter方法獲得。
? ? ? ? 2) ref: 另一個(gè)bean的 id 的引用。
? ? 2.API
? ? 1)BeanFactory: 是一個(gè)生成bean的工廠,采取延遲加載bean,在第一次getbean()的時(shí)候,才會(huì)初始化bean.與ApplicationContext區(qū)別。
? ? 2)classPathXmlApplicattion: ApplicationContext 的子接口。加載配置文件,相對(duì)路徑加載,一般架加載src下的文件(運(yùn)行時(shí)的是/WEB-INF/class/xxx)路徑。
? ? 3)FileSystemXmlApplication:ApplicationContext 的子接口。加載指定盤符下的配置文件。
? ? 4)ApplicationContext:上下文,是BeanFactory的子接口,可以自動(dòng)裝配bean、事件傳遞、國(guó)際化、各應(yīng)用層的context實(shí)現(xiàn)。
? ? ? ? 當(dāng)配置文件被加載的時(shí)候,對(duì)象就被實(shí)例化了。
## IOC:控制反轉(zhuǎn)
? ? 是一種設(shè)計(jì)思想,就是將原本在程序中手動(dòng)創(chuàng)建對(duì)象的控制權(quán),交由Spring框架來(lái)管理。一般情況下,我們?nèi)ナ褂媚硞€(gè)對(duì)象,就需要自己去創(chuàng)建這個(gè)對(duì)象,
? ? 而應(yīng)用了Spring框架,則從spring容器中獲取,把穿甲 對(duì)象的控制權(quán)反轉(zhuǎn)給了spring框架。
? ? 舉個(gè)簡(jiǎn)單的例子:正常情況下,想要吃蛋炒飯,你要準(zhǔn)備飯、蛋、器材,這些都要你自己準(zhǔn)備。
? ? 但是如果有飯店做,那么我們直接叫飯店做,然后去取就可以了。這個(gè)例子中“飯店”就是spring 的ioc容器。
## spring bean
? ? ? 1、
### 基于xml
#### 實(shí)例話方式
? ? 3種實(shí)例化的方式:
? ? 1)默認(rèn)構(gòu)造: 使用默認(rèn)的構(gòu)造函數(shù),因此被加載的bean 對(duì)象的類,必須有一個(gè)空參構(gòu)造函數(shù),否則報(bào)錯(cuò)。
? ? 2)靜態(tài)工廠:通過(guò)一個(gè)靜態(tài)方法生產(chǎn)bean,它的方法是static的。在bean 中使用 <bean? id ="" class =""? factory-method=""> 配置。一般與單例模式結(jié)合。
? ? 3)實(shí)例工廠:必須先有工廠的實(shí)例對(duì)象,然后通過(guò)實(shí)例對(duì)象去創(chuàng)建對(duì)象,所有的方法都是非靜態(tài)的。
? ? ? ? ? ? 先定義工廠的bean,然后定義需要獲取的需要加載對(duì)象的bean,再這個(gè)對(duì)象的bean中配置工廠的id:factory-bean="" 和方法factory-method=""。
#### bean 的生命周期
#### bean 的種類
#### bean 的作用域
? ? scop
? ? ? 單例和多例
# AOP:切面編程-