javascript
小白都能学会的Spring Boot!
關注微信公眾號【七步編程】,專注Python、AI、大數據,原創文章第一時間推送!
前言
關于Spring Boot ,曾經因為項目需求,“臨陣磨槍”式的學習了 一下,但是,那時候自己使用相對簡單,就做一些簡單的API接口的開發。所以,就在網絡上找了一些在線教程,結合看了一些快速入門的博客,把項目給搭建了起來。
最近由于疫情的原因,在家遠程辦公有了一些空閑時間,所以,就想著抽空把Spring更加細致的學習一遍。在這個過程中發現了一些不錯的免費課程,所以來分享一下我關于Spring Boot 的學習思路,希望能夠對有需要的朋友有所幫助。
Spring Boot
當學習一門技術時,我們要提前弄明白幾個問題,
- 它是什么?
- 為什么學?
- 怎么樣學?
下面,我就從這3個方面來介紹一下Spring Boot。
Spring Boot是什么?
介紹Spring Boot之前需要簡短的介紹一下Spring,因為它們是承前啟后的關系,Spring Boot是發展自Spring的基礎上,如果不明白Spring就貿然介紹Spring Boot會覺得云里霧里。
Spring框架是Java平臺上的一種開源應用框架,提供具有控制反轉特性的容器。舉個例子,它就類似于tensorflow之于機器學習,如果沒有Spring,我們同樣可以使用Java EE完成一項功能的開發,但是Spring的出現使JAVA EE開發更加容易。
Spring的核心包括2個概念:控制反轉(IOC)和面向切面(AOP)。
而Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化Spring應用的初始搭建以及開發過程。
為什么學Spring Boot?
前面簡單的介紹了一句,Spring Boot的設計目的是為了簡化Spring應用。
那也就是說Spring Boot是為了解決Spring的弊端而出現的,所以,這個問題又回到了Spring上面。
既然Spring不好用,那么不學不就行了?為什么還要重寫設計出一個Spring Boot?
這里就需要首先了解一下為什么學習Spring?
下面通過一個簡單的例子來說明一下。
**假設一個場景:**目前有三個角色,買水果的人(用戶),賣水果的人(業務層),水果(持久化層),
先寫一個接口,
public interface Fruit {public void get(); }現在實現3種水果的類,為了方便展示,把它們先寫在一起,
// Apple.java public class Apple implements Fruit{public void get() {System.out.println("get an apple");} }// Orange.java public class Banana implements Fruit{public void get() {System.out.println("get a banana");} }// Banana.java public class Orange implements Fruit{public void get() {System.out.println("get a organe");} }現在實現一個業務層,也就是從3個水果類中獲取水果,
// UserService.java public class UserService {private Fruit fruit = new Apple();public void getFruit() {fruit.get();} }然后,實現一個用戶類,
// User.java public class User {public static void main(String[] args) {UserService user = new UserService();user.getFruit();} }上述就是我們實現一個程序的慣用方式,這樣看上去沒有什么問題,目前我們調用業務層UserService獲取到蘋果,那么試想一下,**如果現在我想獲取橘子怎么辦?**這樣就需要修改業務層代碼,
// UserService.java public class UserService {private Fruit fruit = new Orange();public void getFruit() {fruit.get();} }也許很多同學會認為這樣沒什么問題,那就修改一下業務層代碼啊?
顯然,這不是一個優秀的程序員做的事情,每當用戶需求做出改變時,我們的代碼都要做出相應的修改,那么有兩個問題,
- 如果工程量較大,修改的內容較多怎么辦?
- 如果我們修改代碼對其他業務造成影響怎么辦?
所以,一個好的設計思路就應該在不改變原代碼的基礎上實現我們想要的功能。
那么,接下來就應該轉變思維,考慮一下,目前的控制權在業務層,所以每次用戶需求改變時,業務層也要跟著改變,既然這樣,我們把控制權交給用戶不就行了嗎?
下面來修改一下業務層的代碼實現控制權的轉換,
public class UserService {private Fruit fruit;public void setFruit(Fruit fruit) {this.fruit = fruit;}public void getFruit() {this.fruit.get();} }細心的同學應該可以看得出改變,我在加了一個set方法,使得用戶層可以注入不同的對象,這樣我們在用戶層傳入哪個對象,就會獲得哪個結果,
// 1. 獲取橘子 public class User {public static void main(String[] args) {UserImpl user = new UserImpl();user.setFruit(new Orange()); //在這里注入對象user.getFruit();} } //2. 獲取香蕉 public class User {public static void main(String[] args) {UserImpl user = new UserImpl();user.setFruit(new Banana());user.getFruit();} }現在來總結一下,經過改變前后到底發生了什么,
上圖展示的很明確,就是控制權的反轉,之前主動權在業務層,每次用戶提出需求業務層就需要跟著做出改變,現在我們把主動權交給了用戶,它傳進什么,就得到什么樣的結果,這樣業務代碼就不用跟著改變了。
這就是IOC(控制反轉)的核心思想。
IOC就是Spring中兩個主要的概念之一,另外一個就是AOP(面向切面),它的主要思路應用動態代理,這里不詳細展開。
讀到這里就應該明白,我們在學習Python、Java、C++等編程語言的過程中,都會接觸到運算符、變量類型、循環、條件、面向對象這些語法,而Spring Boot是高于這些語法之上,更高一層的思維方式的轉變。
Spring并不像我們所學的基本語法那樣的固定知識點一樣,它是一種思維方式,通過這種思維方式的轉變能夠讓項目開發更加簡潔高效,這就是Spring的主要優點之一。
前面通過長篇大論介紹了Spring的核心和優點,那么現在來說一下它的缺點。
Spring在組件注入和裝配過程中需要大量的配置,那么,隨著項目的增大,那么就需要很多龐大的配置項,顯然,這與Spring的初衷是相悖的。
所以,Spring Boot就以**“習慣優于配置”的理念在Spring的基礎上擴展而來,它不僅繼承了Spring的優點,還實現了自動配置Spring**,進一步簡化了開發過程,這就是Spring Boot的優點之一,當然,它還有諸多其他優點,例如,
- 創建獨立的Spring應用程序
- 嵌入的Tomcat,無需部署WAR文件
- 簡化Maven配置
- 自動配置Spring
- 提供生產就緒型功能,如指標,健康檢查和外部配置
- 絕對沒有代碼生成和對XML沒有要求配置
怎么樣學?
前面只是介紹了一下Spring中的一個重要概念IOC的本質和Spring、Spring Boot的優點,明確了**它是什么?為什么學?**這兩個問題,那么接下來就來到了最后一個問題,怎么樣學?
我所介紹的只是九牛一毛,Spring Boot包含很龐大的體系,有很多值得學習的,所以,如果真正對Java開發感興趣的,我認為需要系統詳細的學習一下。
但是,我需要強調一點,不要一開始就直接學習Spring Boot,那樣的話當看著各種注解、裝配、組件…會覺得云里霧里,當不明白的時候又需要逐個的去網絡上查找**@Autowired**、@Component…是什么概念?這樣不僅浪費時間,而且無法深入理解它的原理和來龍去脈。
所以,在學習Spring Boot之前一定先學習Spring。
由于我對于Spring和Spring Boot也不是特別深入,只是之前開發前后端時用到了Vue和Spring Boot,所以就不班門弄斧,這里我推薦兩份不錯的課程。
感興趣的可以在嗶哩嗶哩搜索狂神Java,可以看一下下面這兩份免費課程,
- 《Spring5最新完整教程IDEA版》
- 《SpringBoot最新教程IDEA版》
其中《Spring5最新完整教程IDEA版》共28講,《SpringBoot最新教程IDEA版》共59講,沒講10-20分鐘左右,當然,也有個別的在10分鐘以內或者超過20分鐘。
這兩份課程是前段時間我空閑時間在嗶哩嗶哩看到的,之前本來對于看視頻教程并沒有太大興趣,因為我性子比較急,所以,當學習一門知識時我更喜歡看書或者在線教程,這樣的話我可以自己控制速度,但是,當抱著嘗試一下的心態聽了這份Spring教程之后我發現講的實在太好了,從淺入深,環環相扣,每一步都會對照著官方文檔結合作者自己的見解進行講解,同時也會編碼實現,理論與實踐相結合。
它不像大多數教程或者博客那樣,蜻蜓點水,直接告訴你這個東西怎么用,讓你只知道如何使用但是卻不知道為什么這樣使用,而上述這兩份課程則不然,例如,在講組件的注入和裝配時,它會循序漸進,
- 完全依賴XML裝配
- XML和注解結合
- 完全依賴注解
另外,這兩份課程都是2019年10至11月更新的,用的都是比較新的版本和特性,這樣可以即學即用。
資源
我在百度網盤也分享了一些Spring方面的視頻教程、源代碼、筆記,其中包括,SSM、Spring Boot、Spring Cloud,感興趣的可以閱讀我的另一篇文章【 干貨 | 2019年共享免費資源整理(上):學習資源篇】查看資源獲取方式。
推薦閱讀
- 干貨 | 2019年共享免費資源整理(上):學習資源篇
- 干貨 | 2019年共享免費資源整理(下):實用工具篇
- 實用工具 | 5款超實用瀏覽器插件,第一款真神器
- 實用工具 | 10款搜索引擎,看到第一款就會毅然放棄百度!
- 實用工具 | 6款免費OCR工具,第一款是神器
- 該如何運營一個微信公眾號?
總結
以上是生活随笔為你收集整理的小白都能学会的Spring Boot!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php中哪些不能作为常量名,【单选题】下
- 下一篇: 移动互联网商业契机