資深架構師眼中的Java Web系統十年架構演化之路!

一 、Java Web架構演變

在java架構模式中,咱們能夠將MVC架構模式抽象爲以下結構:前端

  1. View層。View層即UI層,可採用的技術如JSP,Structs,SpringMVC等
  2. Controller層。Controller表示控制器層,可採用的技術,如Servlet/Filter,Spring等
  3. Service層。Service層表示核心服務層,向架構上層提供服務
  4. DAO層。DAO層表示數據訪問層,可採用的技術如jdbc和ORM框架(如Spring JDBC,JPA,Hibernate,Mybatis等)
  5. Model層。Model層即表示JavaBean對象
  6. Utilities層。Utilities層表示公共工具層


須要注意的是,在該架構抽象模型中,並未涉及到其餘技術,如SOA,Nosql(Redis,Mongodb等),MQ等,java

除此以外,基於Springboot+Cloud的微服務技術,也未涉及,由於這裏只將基於MVC的架構模式演變,具體的JavaWeb架構,將在之後的章節講解。sql



基於如上的架構抽象模型,咱們能夠將該架構模式發展分爲三個階段:數據庫

階段一:Servlet階段後端

階段二:SSH(Spring+Structs+Hibernate)階段緩存

階段三:SSM階段(Spring+SpringMVC+Mybatis)階段安全

其實,還存在階段四,即微服務階段,本篇文章不講解。前端框架

階段一:Servlet/Filter扮演控制器角色架構

在該階段架構模式中,Servlet/Filter扮演Controller角色,JSP扮演View角色,JavaBean扮演Model角色框架

該階段的數據庫訪問技術爲具體DB的JDBC,該模式雖然實現了所謂的MVC模式,但卻存在諸多問題:

  1. 先後端分離不完全。因爲JSP技術先後端分離不完全,開發人員每每會在JSP頁面中嵌套Java代碼,從而須要前端開發人員懂java技術
  2. JSP頁面可讀性差,編寫效率低,儘管引入EL,JSTL等技術
  3. Sevlet/Filter做爲控制器,面臨的穩定性,安全性考驗(Servlet是線程不安全的)等
  4. 數據庫訪問技術採用傳統的jdbc,形成過多的冗餘代碼

固然,還存在不少問題,這裏不一一列舉,爲了解決這些問題,JavaWeb專家們提出了一種架構思想:模塊化,抽象化和專注化的思想。

基於該思想,涌向出一批專業化開源框架,其中較爲出名的組合框架即是SSH了。


階段二:SSH

  1. 在該架構模式中,Controller採用Spring框架技術,View採用Structs框架技術,DB訪問技術採用Hibernate框架技術
  2. 從SSH中,很容易看出先後端出現了專業化,精細化分工,且朝框架演變,如前端框架採用Structs,後端框架採用Spring等


然而,SSH架構模式雖然解決了Servlet/Filter架構模式存在的問題,實現了專業化、精細化分工,實現了模塊化和抽象化,但其卻存在一個比較大的問題:框架笨重不靈活。

如Hibernate雖然能知足業務需求,能解決業務,但其笨重不靈活,不能很好地實現可配置化的靈活方式,Structs也過於笨重。

爲了解決該問題,JavaWeb專家們又提出了另一種架構模式,即SSM架構模式。



階段三:SSM

該模式中,Spring扮演Controller角色,SpringMVC扮演View角色(固然,小型系統,可直接採用SpringMVC便可),Mybatis扮演DB訪問技術SSM架構模式

在當前的JavaEE中,算是比較流行的開發模式了,也是大都數企業的技術選型之一。

固然,能與SSM相媲美的另外一種設計思想,那就是微服務思想(SpringBoot+cloud技術等),本篇文章不談及微服務。


二 、SSM核心框架概述

Spring框架

Spring框架目前是JavaWeb開發的主流框架,也能夠說是諸多企業的必選框架,它大體包括六大模塊。

  1. Spring核心容器。該容器是Spring框架最核心部分,它管理着Spring運用中bean的建立、配置和管理等
  2. Spring AOP。該模塊爲面向切面和DI(依賴注入)提供了很好的支持
  3. 數據庫訪問與集成模塊
  4. Web與遠程調用技術
  5. Instrument模塊
  6. Test模塊



Mybatis框架

  1. 根據Mybatis源碼,將其抽象爲三層:基礎支持層,核心處理層和接口層
  2. 基礎支持層包括:數據源、事務管理、日誌、類型轉換、緩存、Bind、解析器等
  3. 核心處理層包括:配置解析、配置映射、SQL解析、SQL執行、結果集映射、插件等
  4. 接口層主要提供JAVA API

相關文章
相關標籤/搜索