SSM - SpringBoot - SpringCloud

SSM框架

Spring + Spring MVC + MyBatis:標準MVC模式
SSH (Struts+Spring+Hibernate)以後,主流的 Java EE企業級 Web應用程序開源框架html

  • spring:實現業務對象管理
  • spring MVC:負責請求的轉發和視圖管理
  • MyBatis:做爲數據對象的持久化引擎

學習:關於SSM框架的優點web

Spring

輕量級容器框架,業務對象管理spring

AOP

面向切面編程,預編譯方式和運行時動態代理實如今不修改源碼狀況下給程序動態統一添加功能編程

  • 代理模式,創建在spring抽象事務管理之上的聲明性事務管理
  • 支持用戶自定義的切面
  • 業務邏輯分離,低耦合

核心:橫切關注點的分離和織入
場景:日誌記錄,性能統計,安全控制,事務處理
其餘幾個重要概念安全

  • 切入點springboot

  • 切面mybatis

攔截器(Advisor)mvc

  • PointCutAdvisor:PointCut + Advice,
  • IntroudtionAdvisor:Introduction,

AOP攔截方法級別,OOP攔截對象級別。app

織入(Weaveing)
1.靜態織入方式框架

  • 編譯期:AspectJ織入編譯器
  • 類加載期:加載到JVM時,類加載器(class loader)

2.動態代理技術
Spring AOP,核心是反射,ProxyFactory或ProxyFactoryBean-->BeanPostProcessor(自動代理)
其中,自動代理有2種

  • BeanNameAutoProxyCreator
  • DefaultAdvisorAutoProxyCreator

AOP代理(AOP Proxy)

  • jdk動態代理
  • cglib代理

學習:對AOP代理的理解示例

IOC

控制反轉(Inversion of control),由容器建立和注入依賴對象,管理對象依賴關係

  • 低侵入式設計
  • 面向接口編程,對象動態組合
  • 增長Bean可複用性,下降Bean之間耦合

學習:通俗易懂Ioc講解

DI

依賴注入(Dependenc Injection),實現 Ioc思想的核心,對象之間依賴關係由容器在運行時決定
實現 DI的核心是反射:實例化類時,經過反射調用類中set方法將事先保存在HashMap中的類屬性注入到類中

  • 誰控制誰,控制什麼
  • 爲什麼是反轉,反轉了什麼
  • 誰依賴誰,爲何須要依賴
  • 誰注入誰,注入了什麼

項目的運行和週期由 Ioc控制,事件的請求和反應由 DI控制
相對 Ioc而言,DI明確描述了「被注入對象依賴 IoC容器配置依賴對象」
學習:Ioc實例講解

基本使用

spring IoC容器實例化Bean(工廠模式):BeanFactory,BeanDefinition,ApplicationContext

  • setter方式實例化Bean
  • 構造器實例化Bean
  • 靜態工廠方式實例化Bean
  • 實例工廠方法實例化Bean

具體參見:https://www.jianshu.com/p/646c1f657144
spring DI實現依賴注入:

  • Setter Injection:經過JavaBean屬性注射依賴關係
  • Constructor Injection:將依賴關係做爲構造子參數傳入
  • 註解機制

SpringMVC

請求轉發和視圖管理
1.客戶端發送請求到DispacherServlet(分發器)
2.由DispacherServlet控制器查詢HanderMapping,找處處理請求的Controller
3.Controller調用業務邏輯處理後,返回ModelAndView
4.DispacherSerclet查詢視圖解析器,找到ModelAndView指定的視圖
5.視圖負責將結果顯示到客戶端

  • 處理映射器:將bean的name做爲url進行查找
  • 處理適配器:按要求的規則去執行handler

MyBatis

SpringBoot

springboot配置

<!-- SpingBoot相關jar包版本 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.5.RELEASE</version>
</parent>
<!-- SpringBoot核心jar包 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- web開發包:包含Tomcat和springmvc -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- SpringBoot熱部署 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>

SpringCloud

相關文章
相關標籤/搜索