Traditional-Frame
- ssh = spring + struts + hibernate
- ssm = spring + springmvc + MyBatis
全家桶
- 腳手架框架: springboot
- 微服務框架: springCloud
簡介
- Spring 是分層的full-stack(全棧)輕量級的框架, 以IOC和AOP為核心, 提供展現Spring mvc 和業務層事務管理等眾多企業級應用技術, 還能整合世界眾多優秀開源的第三方框架和類庫, 已經成為了眾多企業應用開發框架.
- https://spring.io
優勢
- 解耦合, 簡化開發(IOC與DI)
- AOP編程的支持(面向切面編程)
- 聲明式事物的支持(@Transnational)
- 方便程序的測試(@Junit)
- 方便集成各種優秀框架(@Mybatis @Lambook @Redis … )
- 降低了使用難度(註解的使用簡化開發)
- 源碼是經典的java學習範例
核心架構
- Spring核心容器(Core container) : 包含了spring應用中Bean的創建、配置和管理. 在該模塊中, 包括了spring bean factory, 為spring提供了DI的功能. 基於bean工廠, 我們還會發現多種spring應用上下文的實現.
- 面向切面編程(AOP) /Aspects spring : 對面向切面編程提供了豐富的支持. 這個模塊是spring應用系統中開發切面的基礎, 與DI一樣, AOP可以幫助對象解耦.
- 數據訪問與集成 (Data Access/ integration) : 集成了大量JDBC和DAO樣板代碼, 使得數據庫代碼變得簡潔. 也可以更專注於我們的業務, 還可以避免數據庫資源釋放失敗而引起的問題.
- web : 提供了SpringMVC框架給Web應用, 還提供了多種構建和其他應用交互的遠程調用方案
- Test : 很方便的進行單元測試
核心思想
IOC
- Inversion of control (控制反轉)
-- 描述的事情: Java開發領域對象的創建, 管理的問題
-- 傳統開發方式: 通過new對象來實現
-- IOC思想開發方式: 我們不需要自己去new對象, 而是從IOC容器去幫助我們實例化對象並且管理它, 我們需要那個對象, 去問IOC容器拿就可以了
- resolve question : 對象之間的耦合問題
- IOC和DI的區別
-- 描述的是同一件事情, 只是角度不一樣.
-- IOC是站在對象的角度, 對象實例化的權利都交給了容器
-- DI是站在容器的角度, 容器會將對象依賴的其他對象注入
AOP
- Aspect Oriented Programming :
-- AOP是OOP的延續; OOP的三大特徵: 封裝、繼承和多態, OOP是一種垂直繼承體系, 所以不能解決切面編程問題
-- 切面編程: 切指的是橫切邏輯, 面指的是受橫切邏輯影響的多個方法 - resolve question : 在不改變原有業務邏輯的情況下, 增強橫切邏輯代碼, 根本上解耦合.
推薦閲讀
spring-IOC-2...
https://segmentfault.com/a/11...
註解持續更新中...
https://segmentfault.com/a/11...
代碼參考地址...
https://github.com/sumcolin/s...