博客 / 詳情

返回

Spring-base-1(Spring基礎-1)

Traditional-Frame

  • ssh = spring + struts + hibernate
  • ssm = spring + springmvc + MyBatis

全家桶

  • 腳手架框架: springboot
  • 微服務框架: springCloud

簡介

  • Spring 是分層的full-stack(全棧)輕量級的框架,IOCAOP為核心, 提供展現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 : 很方便的進行單元測試
    Data Accessintegration.png

核心思想

IOC

  • Inversion of control (控制反轉) 
    -- 描述的事情: Java開發領域對象的創建, 管理的問題
    -- 傳統開發方式: 通過new對象來實現
    -- IOC思想開發方式: 我們不需要自己去new對象, 而是從IOC容器去幫助我們實例化對象並且管理它, 我們需要那個對象, 去問IOC容器拿就可以了

沒有1OC容器的情況下.png

  • resolve question : 對象之間的耦合問題
  • IOC和DI的區別
    -- 描述的是同一件事情, 只是角度不一樣.
    -- IOC是站在對象的角度, 對象實例化的權利都交給了容器
    -- DI是站在容器的角度, 容器會將對象依賴的其他對象注入

OC容器.png

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...

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.