1. 程式人生 > >【SSM】Spring入門總結

【SSM】Spring入門總結

what?

這一部分說說Spring的概念。 Spring是一個輕量級的控制反轉(IOC)和麵向切面(AOP)的容器框架。

  • web層:SpringMVC
  • service層:Bean管理、IOC、事務管理
  • dao層:提供了JDBC模板,可以很好地和ORM框架進行整合
why?

這一部分說說Spring的作用,我們為什麼要用它。 Spring用的是面向介面的思想,解決的是service層和其它各層的鬆耦合問題。有一句話是這樣描述它的:“Spring帶來了複雜javaEE開發的春天”。

IOC是什麼?

一提到Spring,就不得不說IOC,那IOC究竟是什麼呢?今天小編就來用大白話說說。

  • 情境匯入

    你作為一個獨居的單身dog,對西紅柿炒雞蛋情有獨鍾。 平時都是在家吃西紅柿炒雞蛋,自己動手做,也挺好吃。 有一天,你不想做飯了,就去樓下的小餐館吃,點個西紅柿炒雞蛋,老闆做好後會端給你。

  • 解釋 這就是進行了一次IOC,中文名“控制反轉”。 在家做飯的時候,想怎麼做就怎麼做,做飯的“控制權”在自己手裡。 在飯館吃飯的時候,你將做飯的“控制權”交給了老闆,這就是“控制”被“反轉”了。

  • 在程式碼中的體現 Controller層要想呼叫Service層的介面,有兩種基本方式: (1)UserService userservice=new UserServiceImpl(); (2)不用自己new,直接跟Spring要。 至於這兩種方式各對應於情景中的哪種方式,讀者自己想吧。 從這,我們也能看出Spring的好處:不用再在Controller層寫關於Service層的程式碼了,這兩層進行了解耦合。

  • 情景和程式碼的結合 (1)老闆把飯端給你的這個過程,叫做注入; (2)老闆就是框架裡面的注入控制器類BeanFactory,負責給你提供你想吃的西紅柿炒雞蛋; (3)飯店裡的選單,叫做spring,這道西紅柿炒雞蛋就是spring控制下的JavaBean。

  • 和設計模式中工廠模式的區別? IOC的實現原理就是反射和工廠模式。 我們可以把IOC容器看做一個工廠,這個工廠裡的要生產的物件都在配置檔案中給出定義,然後利用程式語言提供的反射機制,依據配置檔案中給出的類名生成相應的物件。

AOP是什麼?
  • 情境匯入 現在我們公司的簽到機器是個指紋機,每次上下班都需要簽到、簽退。 有一天,公司將簽到系統改革了,在大門框上安裝了個自動識別系統,你通過大門時,能自動簽到簽退。這樣,你就不用再惦記簽到簽退的事了。

  • 在程式碼中的體現 (1)不用AOP的情況下,想在方法執行的前後打印出日誌。

System.out.println("方法a開始執行");
public void a(){
    System.out.println("我是一個方法");
  }
System.out.println("方法a執行成功");

每個方法都需這樣寫。 (2)如果使用了AOP技術,只用一個方法就能讓所在面的方法執行前後都打印出日誌了。

@Around("bean(*Service)")//指定要監控的bean中的方法
public Object testObject(ProceedingJoinPoint jp) throws Throwable{ //引數的意思是代理執行原軟體中的方法
System.out.println(jp.getSignature()+"開始執行"); //在方法執行之前執行
Object val = jp.proceed();	
System.out.println(jp.getSignature()+"執行成功");//在方法執行之後執行
return val;	
}
  • 解釋

AOP,面向切面程式設計。可以在一件事情A的前中後的位置插入一個切面,這樣,每次執行事情A時,就會自動呼叫這個切面所關聯的方法。

  • 好處

使用AOP技術,用一個方法,就能同時作用於一個層面內的所有的方法。用於處理一類場景,並且在日後的開發中不再需要關心,一次開發終身受用。

Spring子專案

spring子專案和spring的關係? Spring就像一個父親,它的這些子專案運用了它的核心思想,想跑起來也得需要它的架包支援。 這些子專案就像一個個工具,用得著就用,覺得不好用就選別的技術,比如Spring Security和Shiro,Spring Cloud和dubbo,選一個就好。 下面小編列舉幾個常用的:

  • Spring Boot 簡化了Spring的搭建和開發過程,實現快速開發。

  • Spring MVC 基於MVC思想和請求-響應模型的框架,將web層進行了職責解耦。

  • Spring Security 為Spring提供一個安全服務,比如使用者認證,授權等。

  • Spring Cloud 提供了在分散式系統中操作的開發工具,比如全域性鎖等。

  • Spring Data 資料訪問模組,對JDBC和ORM都能很好地支援,好處是能更方便快捷地訪問資料庫。

小結