1. 程式人生 > 其它 >spring成神之路第一篇:為何要學spring

spring成神之路第一篇:為何要學spring

Spring系列目標:從入門掌握一個高階開發所需要的技能。

環境

  1. jdk1.8

  2. idea

  3. maven-3.6.1

  4. spring-5.2.3.RELEASE

整個spring系列使用官方最新版本5.2.3.RELEASE,會有大量案例,都是通過maven來管理的,所以maven是必備技能,對這塊不熟悉的可以去看一下:Maven高手系列

為什麼需要學習spring?

  1. 最大程度的簡化了開發

    spring是一個非常優秀的java框架,其目標是為了簡化java企業級開發,spring出來已經十幾年了,這期間也一直圍繞著這個目標在進行,像後面需要學習的springmvc、springboot、springcloud,這些技術也都是圍繞著簡化開發的目標在努力,到目前為止已經做的足夠好了,可以說spring除了不能幫助我們實現業務邏輯程式碼之外,其他的事情spring都儘量去幫我們簡化了,使用spring可以幫助我們節約大量開發時間。

    不使用spring的情況下,開發一個專案可能需要2個月,用了spring可能1個月都不需要,你說這樣的技術你想學麼?

  2. 大量公司使用

    目前99%的公司使用了spring,可以去各大招聘網站看一下,spring算是必備技能,所以一定要掌握。

  3. 頂尖的原始碼

    spring框架原始碼設計非常優秀,在java開源專案中可以說是頂級的,目前為止還未發現比spring更優秀的開源專案,所以想提升程式碼能力的,強烈建議多看看spring的原始碼;關於提升程式碼能力的,還可以去看一下jdk的原始碼,也是非常棒的,裡面有很多大師的傑作。

什麼是spring?

spring是一個簡化java企業級開發的一個框架,內部包含了很多技術,比如:控制反轉&依賴注入、面向切面程式設計、spring事務管理、通過spring整合其他框架、springmvc、springboot、springcloud

等等,這些都是圍繞簡化開發展開的技術,後面會對每個知識點詳細介紹。

感受一下spring的強大

先讓大家感受一下spring的強大,來激發大家學習的興趣。

我們需要為移動端提供api介面,介面資料以json格式輸出,使用java技術,實現過程大家應該比較熟悉,如下:

  1. 使用idea建立一個web專案

  2. 建立servlet,servlet中寫業務程式碼,組裝需要資料,將資料以json格式輸出

  3. 在web.xml中配置servlet資訊

  4. 將專案部署到tomcat中

原生的web專案開發過程都是上面這樣,和業務相關的其實只有第2步,而其他幾個步驟是每個web專案都需要的,像比較大的專案,會有很多web模組,每個模組都需要重複這些1/3/4操作步驟,還是相當繁瑣的,也會耗費大量時間。

如果使用springboot來實現,過程會簡化很多,來感受一下:

開啟idea,點選File->New->Project,如下:

點選Spring Initializr->Next,如下圖:

輸入專案座標資訊,如下圖:

選擇Web->Spring Web->Spring Boot(2.24)->Next,如下圖:

點選Finish,完成專案的建立,如下圖:

專案結構如下圖:

目前為止我們還未寫一行程式碼,下面我們建立一個類HelloWorldController,程式碼如下:

packagecom.javacode2018;

importorg.springframework.web.bind.annotation.RequestMapping;
importorg.springframework.web.bind.annotation.RestController;

/**
*公眾號:路人甲Java,工作10年的前阿里P7分享Java、演算法、資料庫方面的技術乾貨!堅信用技術改變命運,讓家人過上更體面的生活!
*/

@RestController
@RequestMapping("/helloWorld")
publicclassHelloWorldController{
@RequestMapping("/index")
publicStringindex(){
return"helloworld!";
}
}

大家先不用關注專案中程式碼什麼意思,主要關注一下效果。

下面我們來啟動專案。

注意專案中有一個自動生成的類:com.javacode2018.SpringDemo1Application,這個類包含了main方法,說明是可以執行的,我們執行一下,控制檯輸出:

._________
/\\/___'_____(_)______\\\\
(()\___|'
_|'_||'_\/_`|\\\\
\\/___)||_)|||||||(_||))))
'|____|.__|_||_|_||_\__,|////
=========|_|==============|___/=/_/_/_/
::SpringBoot::(v2.2.4.RELEASE)

2020-02-0317:42:52.965INFO985848---[main]com.javacode2018.SpringDemo1Application:StartingSpringDemo1ApplicationonDESKTOP-3OB6NA3withPID985848(E:\spring\spring-demo1\target\classesstartedbyThinkinE:\spring\spring-demo1)
2020-02-0317:42:52.968INFO985848---[main]com.javacode2018.SpringDemo1Application:Noactiveprofileset,fallingbacktodefaultprofiles:default
2020-02-0317:42:55.440INFO985848---[main]o.s.b.w.embedded.tomcat.TomcatWebServer:Tomcatinitializedwithport(s):8080(http)
2020-02-0317:42:55.450INFO985848---[main]o.apache.catalina.core.StandardService:Startingservice[Tomcat]
2020-02-0317:42:55.451INFO985848---[main]org.apache.catalina.core.StandardEngine:StartingServletengine:[ApacheTomcat/9.0.30]
2020-02-0317:42:55.554INFO985848---[main]o.a.c.c.C.[Tomcat].[localhost].[/]:InitializingSpringembeddedWebApplicationContext
2020-02-0317:42:55.554INFO985848---[main]o.s.web.context.ContextLoader:RootWebApplicationContext:initializationcompletedin2546ms
2020-02-0317:42:55.691INFO985848---[main]o.s.s.concurrent.ThreadPoolTaskExecutor:InitializingExecutorService'
applicationTaskExecutor'
2020-02-0317:42:55.800INFO985848---[main]o.s.b.w.embedded.tomcat.TomcatWebServer:Tomcatstartedonport(s):8080(http)withcontextpath'
'
2020-02-0317:42:55.802INFO985848---[main]com.javacode2018.SpringDemo1Application:StartedSpringDemo1Applicationin3.219seconds(JVMrunningfor4.096)
2020-02-0317:43:17.691INFO985848---[nio-8080-exec-1]o.a.c.c.C.[Tomcat].[localhost].[/]:InitializingSpringDispatcherServlet'
dispatcherServlet'
2020-02-0317:43:17.691INFO985848---[nio-8080-exec-1]o.s.web.servlet.DispatcherServlet:InitializingServlet'
dispatcherServlet'
2020-02-0317:43:17.695INFO985848---[nio-8080-exec-1]o.s.web.servlet.DispatcherServlet:Completedinitializationin4ms

開啟瀏覽器,訪問下面地址:

http://localhost:8080/helloWorld/index

效果如下圖:

此時我們需要的功能已經實現了,然而到目前為止,只有HelloWorldController程式碼是我們寫的,而我們沒有去建立servlet、將返回的結果以json格式輸出、配置web.xml,沒有將專案釋出到tomcat,沒有去啟動tomcat,而只啟動了一個main方法,是不是非常神奇。建立servlet、通過response將資料以json格式輸出、配置web.xml、釋出專案到tomcat、啟動tomcat等這些操作並不是說不需要,而是springboot內部已經幫我們實現了,對於開發者來說這些都被隱藏了,springboot讓我們更關注業務程式碼的實現,從而最大限度的幫我們提升開發效率,簡化專案的開發過程。

參考:https://mp.weixin.qq.com/s?__biz=MzA5MTkxMDQ4MQ==&mid=2648933921&idx=1&sn=db7ff07c5d60283b456fb9cd2a60f960&chksm=88621e1fbf15970919e82f059815714545806dc7ca1c48ed7a609bc4d90c1f4bb52dfa0706d5&token=157089977&lang=zh_CN&scene=21#wechat_redirect