時間:2017年1月18日星期三
說明:本文部份內容均來自慕課網。@慕課網:http://www.imooc.com
教學示例源碼:https://github.com/zccodere/s...
我的學習源碼:https://github.com/zccodere/s...java
本門課程包含的內容git
什麼是框架github
Spring簡介 IOC(配置、註解) Bean(配置、註解) AOP(配置、註解、AspetJ、API)
如何學習Springspring
掌握用法 深刻理解 不斷實踐 反覆總結 再次深刻理解與實踐
Spring是什麼編程
Spring是一個開源框架,爲了解決企業應用開發的複雜性而建立的,但如今已經不止應用於企業應用。 是一個輕量級的控制反轉(IOC)和麪向切面(AOP)的容器框架 --從大小與開銷兩方面而言Spring都是輕量的 --經過控制反轉(IOC)的技術達到鬆耦合的目的 --提供了面向切面編程的豐富支持,容許經過分離應用的業務邏輯與系統級服務進行內聚性的開發。 --包含並管理應用對象的配置和生命週期,這個意義上是一種容器。 --將簡單的組件配置、組合成爲複雜的應用,這個意義上是框架
爲何是Spring安全
在Spring上開發應用簡單 在Spring上開發應用方便 在Spring上開發應用快捷
Spring帶來了複雜JavaEE開發的春天框架
Spring做用性能
容器 提供了多種技術的支持 --JMS --MQ支持 --UnitTest AOP(事務管理、日誌等) 提供了衆多方便應用的輔助類(JDBC Template等) 對主流應用框架(Hibernate等)提供了良好的支持
適用範圍學習
構建企業應用(SpringMVC+Spring+Hibernate/MyBatis) 單獨使用Bean容器(Bean管理) 單獨使用AOP進行切面處理 其餘的Spring功能:如:對消息的支持等 在互聯網中的應用
框架ui
什麼是框架
爲何使用框架
軟件系統日趨複雜 重用度高,開發效率和質量提升 軟件設計人員要專一於對領域的瞭解,使需求分析更充分 易於上手、快速解決問題
IOC
接口及面向接口編程 什麼是IOC Spring的Bean配置 Bean的初始化 Spring的經常使用注入方式
接口
用於溝通的中介物的抽象化 實體把本身提供給外界的一種抽象化說明,用以由內部操做分離出外部溝通方法,使其能被修改內部而不影響外界其餘實體與其交互的方式 對應Java接口即聲明,聲明瞭哪些方法是對外公開提供的 在Java8中,接口能夠擁有方法體
面向接口編程
結構設計中,分清層次及調用關係,每層只向外(上層)提供一組功能接口,各層次僅依賴接口而非實現類 接口實現的變更不影響各層間的調用,這一點在公共服務中尤其重要 「面向接口編程」中的「接口」是用於影藏具體實現和實現多態性的組件
什麼是IOC
IOC:控制反轉,控制權的轉移,應用程序自己不負責依賴對象的建立和維護,而是由外部容器負責建立和維護 DI(依賴注入)是其一種實現方式 目的:建立對象而且組裝對象之間的關係
Spring的Bean配置
Bean容器初始化
基礎:兩個包 org.springframework.beans org.springframework.context BeanFactory提供配置結構和基本功能,加載並初始化Bean ApplicationContext保存了Bean對象並在Spring中被普遍使用方式,ApplicationContext 本地文件 Classpath Web應用中依賴servlet或Listener
Spring注入是指在啓動Spring容器加載bean配置的時候,完成對變量的賦值行爲 經常使用的兩種注入方式 --設值注入 --構造注入
定義 初始化 使用 銷燬
Spring中提供了一些以Aware結尾的接口,實現了Aware接口的bean在被初始化以後,能夠獲取相應資源 經過Aware接口,能夠對Spring相應資源進行操做(必定要慎重) 爲對Spring進行簡單的擴展提供了方便的入口
@Required註解適用於bean屬性的setter方法
這個註解僅僅表示,受影響的bean屬性必須在配置時被填充,經過在bean定義或經過自動裝配一個明確的屬性值
基於java的容器註解
@Bean標識一個用於配置和初始化一個由SpringIOC容器管理的新對象的方法,相似於XML配置文件的<bean/> 能夠在Spring的@Component註解的類中使用@Bean註解任何方法(僅僅是能夠),一般使用的是@Configuration
專題三AOP
什麼是AOP及實現方式 AOP基本概念 Spring中的AOP Schema-based AOP Spring AOP API AspectJ
什麼是AOP
AOP:Aspect Oriented Programming的縮寫,意爲:面向切面編程,經過預編譯方式和運行期動態代理實現程序功能的統一維護的一種技術。 主要的功能是:日誌記錄,性能統計,安全控制,事務處理,異常處理等等。
AOP實現方式
預編譯 AspectJ 運行期動態代理(JDK動態代理、CGLib動態代理) SpringAOP、JbossAOP
Spring框架中AOP的用途
提供了聲明式的企業服務,特別是EJB的替代服務的聲明 容許用戶 定製本身的方面,以完成OOP與AOP的互補使用
Spring的AOP實現
純java實現,無需特殊的編譯過程,不須要控制類加載器層次 目前只支持方法執行鏈接點(通知Spring Bean的方法執行) 不是爲了提供最完整的AOP實現(儘管它很是強大);而是側重於提供一種AOP實現和Spring IOC容器之間的整合,用於幫助解決企業應用中的常見問題 Spring AOP不會與AspextJ競爭,從而提供綜合全面的AOP解決方案
<aop:config>風格的配置大量使用了Spring的自動代理機制
Introductions
簡介容許一個切面聲明一個實現指定接口的通知對象,而且提供了一個接口實現類來表明這些對象。 由<aop:aspect>中的<aop:declare-parents>元素聲明該元素用於聲明所匹配的類型擁有一個新的parent(所以得名)
Advisor就像一個小的自包含的方面,只有一個advice
切面自身經過一個bean表示,而且必須實現某個advice接口,同時,advice也能夠很好的利用AspectJ的切入點表達式
Spring經過配置文件中<aop:advisor>元素支持advisor實際使用中,大多數狀況下它會和transactional advice配合使用 爲了定義一個advisor的優先級以便讓advice能夠有序,可使用order屬性來定義advisor的順序
Spring AOP API
這是Soring1.2歷史用法,如今(V4.0)仍然支持 這是SpringAOP基礎,不得不瞭解 如今的用法也是基於歷史的,只是更簡便了
Aspect
一、@AspectJ切面使用@Aspect註解配置,擁有@Aspect的任何bean將被Spring自動識別並應用。 二、用@Aspect註解的類能夠有方法和字段,他們也可能包括切入點(pointcut),通知(Advice)和引入(introduction)聲明。 三、@Aspect註解是不可以經過類路徑自動檢測發現的,因此須要配合使用@Component註釋或者在xml配置bean。