-
控制反轉(zhuǎn)IOC: 控制權(quán)的一個(gè)轉(zhuǎn)換,把依賴對(duì)象的創(chuàng)建和維護(hù)交給spring容易來管理
查看全部 -
? 1.spring是一個(gè)輕量級(jí)的 控制反轉(zhuǎn)(Ioc)和面向切面(AOP)的容器框架
通過控制反轉(zhuǎn)(Ioc)技術(shù)達(dá)到松耦合的目的
面向切面,允許通過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級(jí)服務(wù)進(jìn)行內(nèi)聚性的開發(fā)
包含并管理應(yīng)用對(duì)象的配置和生命周期,是一個(gè)容器
將簡單的組件配置,組成成為復(fù)雜 的應(yīng)用,這個(gè)意義是框架
查看全部 -
Spring注入概念:指在啟動(dòng)Spring容器加載bean配置的時(shí)候,完成對(duì)變量的復(fù)制行為。(掃描xml文件中的bean標(biāo)簽時(shí),實(shí)例化對(duì)象的同時(shí),完成成員變量的賦值)
Spring常用的注入方式:
設(shè)值注入:通過一個(gè)屬性或者成員變量的Set方法進(jìn)行注入
<bean id="injectionService" class="com.imooc.ioc.injection.service.InjectionServiceImpl">
<property name="injectionDAO" ref="injectionDAO"/>
</bean>
<bean id="injectionDAO" class="com.imooc.ioc.injection.dao.InjectionDAOImpl">
</bean>
構(gòu)造注入
<bean id="injectionService" class="com.imooc.ioc.injection.service.InjectionServiceImpl">
<constructor-arg name="injectionDAO" ref="injectionDAO"/>
</bean>
<bean id="injectionDAO" class="com.imooc.ioc.injection.dao.InjectionDAOImpl">
</bean>
查看全部 -
一、接口及面向接口編程
接口:
1、用于溝通的中介物的抽象化。(相當(dāng)于中間者,外部與接口溝通,但不與接口實(shí)現(xiàn)類進(jìn)行溝通)
2、實(shí)體把自己提供給外界的一種抽象化說明,用以由內(nèi)部操作分離出外部溝通方法,使其能被修改內(nèi)部而不影響外界其他實(shí)體與其交互的方式(接口提供外部功能,至于內(nèi)部的具體實(shí)現(xiàn)不對(duì)外公開,比如:注冊(cè),只需要提供手機(jī)號(hào)、密碼等信息就可以進(jìn)行注冊(cè),具體怎么實(shí)現(xiàn)的,邏輯怎樣判斷的,數(shù)據(jù)存儲(chǔ)在哪里等具體實(shí)現(xiàn)邏輯不對(duì)外公開)
3、對(duì)應(yīng)java接口即聲明,聲明了哪些方法是對(duì)外公開提供的,在Java8中,接口可以擁有方法體,(某種程度上和抽象類具有相似的功能)。
面向接口編程:
1、結(jié)構(gòu)設(shè)計(jì)中,分清層次及調(diào)用關(guān)系,每層只向外(上層)提供一組功能接口,各層間僅依賴接口而非實(shí)現(xiàn)類。(多態(tài)的體現(xiàn))
2、優(yōu)點(diǎn):接口實(shí)現(xiàn)的變動(dòng)不影響各層間的調(diào)用,這一點(diǎn)在向外提供公共服務(wù)或者在企業(yè)內(nèi)部提供公共服務(wù)中尤為重要,由于公共服務(wù),所以穩(wěn)定性一定很重要(對(duì)外提供接口保證了接口的穩(wěn)定性,對(duì)于接口的實(shí)現(xiàn)可以根據(jù)某一時(shí)期的具體情況或者某一時(shí)期具體邏輯的變化進(jìn)行調(diào)整)
3、面向接口編程中的“接口”:用于隱藏具體實(shí)現(xiàn)和實(shí)現(xiàn)多態(tài)性的組件,面向接口編程在IOC中應(yīng)用非常廣泛(對(duì)外提供調(diào)用說明的,但不包含具體的實(shí)現(xiàn),具體的實(shí)現(xiàn)由接口實(shí)現(xiàn)類完成)
二、什么是IOC
IOC概念:(Inversion of Control)控制反轉(zhuǎn),控制權(quán)的轉(zhuǎn)移,應(yīng)用程序本身不負(fù)責(zé)依賴對(duì)象的創(chuàng)建和維護(hù),而是由外部容器負(fù)責(zé)創(chuàng)建(創(chuàng)建對(duì)象并且組裝對(duì)象之間的依賴關(guān)系)和維護(hù)(正常情況下使用對(duì)象則需要new對(duì)象,而使用外部容器之后,對(duì)象就被容器管理了,包括對(duì)象的創(chuàng)建、初始化、銷毀等,對(duì)象就可以直接從容器中直接拿過來用),IOC容器在初始化時(shí),會(huì)創(chuàng)建一系列的對(duì)象,同時(shí)把對(duì)象之間的依賴關(guān)系通過注入的方式組織起來。(組裝:一個(gè)類A,和一個(gè)類B,類A把類B作為自己的屬性,當(dāng)IOC進(jìn)行實(shí)例化時(shí),先實(shí)例化A,再實(shí)例化B,再把B注入到A中)
比喻:我們手動(dòng)去new一個(gè)對(duì)象,就像我們想要一所房子,我們自己手動(dòng)的買材料去建造,而使用容器之后,就像找開發(fā)商,直接可以入住房子。
DI概念:(Dependency Injection)依賴注入,控制反轉(zhuǎn)的一種實(shí)現(xiàn)方式,獲得依賴對(duì)象的過程由自身管理變?yōu)榱擞蒊OC容器主動(dòng)注入,所謂依賴注入,就是由IOC容器在運(yùn)行期間,動(dòng)態(tài)地將某種依賴關(guān)系注入到對(duì)象之中。
IOC目的:創(chuàng)建對(duì)象并且組裝對(duì)象之間的關(guān)系(IOC容器在初始化時(shí),會(huì)初始化一系列的對(duì)象,同時(shí)能把對(duì)象之間的依賴關(guān)系通過注入的方式組織起來)例如:一個(gè)類A里存在另一個(gè)類B的聲明,IOC會(huì)負(fù)責(zé)創(chuàng)建A和B的對(duì)象,并通過A的構(gòu)造方法注入B的實(shí)例。
Spring官網(wǎng)給出IOC工作原理
描述IOC
三、Spring的Bean配置
1、在IOC容器中所有的對(duì)象都稱為Bean。
2、Spring的Bean配置方式有兩種:基于XML配置、注解配置。
3、XML中配置:<bean id="bean的唯一標(biāo)識(shí)",class="交給容器管理的類的路徑"></bean>
四、Bean容器的初始化
基礎(chǔ):兩個(gè)包:
org.springframework.beans
org.springframework.context
beans提供BeanFactory及其子類,它提供配置結(jié)構(gòu)和基本功能,并加載初始化Bean
context提供ApplicationContext及實(shí)現(xiàn)類保存了Bean對(duì)象并在Spring中被廣泛使用
初始化ApplicationContext方式:
1、加載本地文件(指定磁盤下某路徑下的xml文件)
2、Classpath(相對(duì)路徑,相對(duì)項(xiàng)目的路徑)
3、Web應(yīng)用中依賴servlet或Listener初始化Bean容器(兩種方式,任選其一)
例子:
查看全部 -
default-int-method? default-destroy-method
destroy
afterProperties
查看全部 -
定義
初始化
使用
銷毀
查看全部 -
IOC:控制反轉(zhuǎn),控制權(quán)的轉(zhuǎn)移,應(yīng)用程序本身不負(fù)責(zé)依賴對(duì)象的創(chuàng)建和維護(hù),而是由外部容器負(fù)責(zé)創(chuàng)建和維護(hù)
DI:依賴注入是控制反轉(zhuǎn)的一種實(shí)現(xiàn)方式
目的:創(chuàng)建對(duì)象并且組裝對(duì)象之間的關(guān)系
例如:房子的使用上:買房人并不需要去自己設(shè)計(jì)圖紙蓋房子等,只需要買來就行了
依賴注入:
A類中有一個(gè)B類的屬性,將B類賦值給A類就是依賴注入
就是由IOC容器在運(yùn)行期間,動(dòng)態(tài)地將某種依賴關(guān)系注入到對(duì)象之中
圖解:
業(yè)務(wù)對(duì)象(POJO)進(jìn)入spring container中,通過外部配置,生產(chǎn)出符合需要的對(duì)象
1,在Spring的Bean配置xml文件中:
<bean id="oneInterface" class="com.imooc.ioc.interfaces.OneInterfaceImpl"></bean>
id是唯一標(biāo)識(shí),class是類的具體地址
2,測試:未完善
如果是正常調(diào)用:OneInterface oneInterface=new OneInterfaceImpl()
依賴注入調(diào)用:OneInterface oneInterface=super.getBean("oneInterface");
查看全部 -
什么是框架:
1,半成品
2,封裝了特定的處理流程和控制邏輯
3,成熟的,不斷升級(jí)改進(jìn)的軟件
查看全部 -
IOC:????輕量級(jí)的控制反轉(zhuǎn),達(dá)到松耦合的目的
? ? ? ? ? ?將控制權(quán)交出去,使用時(shí)得到對(duì)象
AOP:面向切面,允許通過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級(jí)服務(wù)進(jìn)行內(nèi)聚性的開發(fā)----例如倉庫管理的業(yè)務(wù)邏輯和日志記錄的系統(tǒng)服務(wù)
? ? ? ? ? 事務(wù)管理,日志等
Spring既是一個(gè)容器也是一個(gè)框架
容器:管理生成的對(duì)象的配置和生命周期
框架:將簡單的組建配置,組合成為復(fù)雜的應(yīng)用
所有的對(duì)象在spring里面都叫bean
mybatis是ibatis的下一個(gè)版本
SpringMVC+Spring+Hibernate/ibatis
查看全部 -
如何學(xué)習(xí)spring:
掌握用法,深入理解,不斷實(shí)踐,反復(fù)總結(jié),再次深入理解與實(shí)踐
資源:
http://projects.spring.io/spring-framework/
查看全部 -
筆記比記筆記
查看全部 -
筆記比記筆記
查看全部 -
Spring是一個(gè)開源框架,是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IOC)和面向切面(AOP)的容器框架,從大小和開銷兩方面而言Spring都是輕量級(jí)的,通過控制反轉(zhuǎn)(IOC)的技術(shù)達(dá)到松耦合的目的,提供了面向切面編程的豐富支持
查看全部 -
Autowired 注解
查看全部 -
spring? 代理方式
查看全部
舉報(bào)