0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SpringBoot將推翻以往的Java應(yīng)用開發(fā)

電子工程師 ? 來源:網(wǎng)絡(luò)整理 ? 作者:工程師3 ? 2018-05-27 08:27 ? 次閱讀

使用Java做Web應(yīng)用開發(fā)已經(jīng)有近20年的歷史了,從最初的Servlet1.0一步步演化到現(xiàn)在如此多的框架,庫以及整個(gè)生態(tài)系統(tǒng)。經(jīng)過這么長時(shí)間的發(fā)展,Java作為一個(gè)成熟的語言,也演化出了非常成熟的生態(tài)系統(tǒng),這也是許多公司采用Java作為主流的語言進(jìn)行服務(wù)器端開發(fā)的原因,也是為什么Java一直保持著非常活躍的用戶群。

Java開發(fā)概述:

使用Java做Web應(yīng)用開發(fā)已經(jīng)有近20年的歷史了,從最初的Servlet1.0一步步演化到現(xiàn)在如此多的框架,庫以及整個(gè)生態(tài)系統(tǒng)。經(jīng)過這么長時(shí)間的發(fā)展,Java作為一個(gè)成熟的語言,也演化出了非常成熟的生態(tài)系統(tǒng),這也是許多公司采用Java作為主流的語言進(jìn)行服務(wù)器端開發(fā)的原因,也是為什么Java一直保持著非?;钴S的用戶群。然而這個(gè)生態(tài)系統(tǒng)紛繁復(fù)雜,一個(gè)非常簡(jiǎn)單的Java Web應(yīng)用程序都有可能應(yīng)用到以下技術(shù):

Java開發(fā)分為兩個(gè)陣營,一個(gè)是由Oracle 為代表的Java EE陣營,這是Web開發(fā)的官方參考標(biāo)準(zhǔn)。其中核心技術(shù)主要有Servlet, EJB, JMS, JSF, JDBC/JPA, JAXB, JAX-WS等。另一個(gè)陣營則是由開源社區(qū)以及Pivotal代表的Spring陣營,其中核心技術(shù)主要有 Spring Framework, Spring MVC, Spring Data, Spring Security等等。

Spring從最開始作為依賴注入的Bean container,逐漸發(fā)展為Java應(yīng)用開發(fā)的主流框架。Java EE因?yàn)槠溆纺[,復(fù)雜,難以使用的結(jié)構(gòu),被很多Java程序員拋棄。從Java EE6開始才引入了CDI (Context Dependency Injection),而且Java EE 的設(shè)計(jì)思想非常學(xué)術(shù)化, Gavin King等人脫離了工業(yè)界的需求,使得Java EE開發(fā)非常復(fù)雜。JSF甚至為Java之父James Gosling詬病。相反在Spring社區(qū),越來越多現(xiàn)代化的應(yīng)用開發(fā)方法被融入進(jìn)來,形成不同的Spring項(xiàng)目。

什么是Spring Boot?

Spring Boot便是一個(gè)社區(qū)反饋推動(dòng)的項(xiàng)目。 Spring Boot可以說是至少近5年來Spring乃至整個(gè)Java社區(qū)最有影響力的項(xiàng)目之一。Spring Boot主要包含以下特性:

1.直接嵌入Tomcat, Jetty或者Undertow作為Servlet container。從此之后再也不用將應(yīng)用程序打包成war然后上傳到application server里面了。

2.提供了starter POM, 能夠非常方便的進(jìn)行包管理, 很大程度上減少了jar hell或者dependency hell

3.自動(dòng)進(jìn)行Spring框架的配置,節(jié)省程序員大量的時(shí)間和精力,能夠讓程序員專注在業(yè)務(wù)邏輯代碼的編寫上

4.不需要任何第三方系統(tǒng), Spring Boot自帶了可以用于生產(chǎn)環(huán)境的程序狀態(tài)信息和健康狀態(tài)。同時(shí)可以讓應(yīng)用程序非常方便的讀取外部的配置信息

5.完全不需要任何代碼的自動(dòng)生成。更不需要用xml來進(jìn)行框架的配置

為什么Spring Boot是顛覆性的?

為什么說Spring Boot是顛覆性的呢?因?yàn)樗鼜氐赘淖兞薐ava應(yīng)用開發(fā)的模式。以往我們做Spring應(yīng)用開發(fā),要知道配置哪些類來讓Hibernate和Spring一起工作,要知道如何配置view resolver來控制哪個(gè)模版進(jìn)行視圖層的展示。經(jīng)常寫了一大堆代碼之后發(fā)現(xiàn)只是在處理Spring框架本身的配置,根本一行業(yè)務(wù)邏輯都沒有寫。開發(fā)完成之后,我們還要考慮部署的問題,且不說部署到非常笨重的應(yīng)用服務(wù)器,比如WebSphere, Weblogic或者JBoss,即使部署到Tomcat或者Jetty這種輕量級(jí)容器上面,我們要知道如何配置容器,如何修改配置文件等等。而且在多應(yīng)用部署到同一個(gè)Tomcat的時(shí)候,經(jīng)常會(huì)出現(xiàn)沖突。就算我們花了很大力氣解決了這些問題,程序部署成功之后,我們很難去了解這個(gè)程序的運(yùn)行狀態(tài)。有可能我們要配置很多第三方工具來去知道這個(gè)應(yīng)用程序運(yùn)行狀態(tài)如何,有哪些參數(shù),環(huán)境變量是什么。盡管Spring幫我們解決了依賴注入的問題,簡(jiǎn)化了一些MVC的流程,但是Spring框架本身集成了越來越多東西,導(dǎo)致其越來越難配置,維護(hù)成本成直線上升。很多時(shí)候Java程序員們看到Python, Ruby或者JavaScript程序員敲幾個(gè)命令安裝一些庫,然后簡(jiǎn)單的敲幾行代碼,引入一些框架比如flask,然后直接一個(gè)簡(jiǎn)單的API就可以跑起來了。這時(shí)候Java程序員可能還在研究該使用Maven里面的哪個(gè)庫,如何在代碼里面進(jìn)行配置呢。大家心里的表情肯定是這樣:

(求此時(shí)Java程序員心理陰影面積)

Java程序員揚(yáng)眉吐氣的時(shí)候到了!

傳統(tǒng)Spring開發(fā)對(duì)決Spring Boot應(yīng)用開發(fā)

接下來我會(huì)通過具體例子對(duì)比傳統(tǒng)的Spring應(yīng)用開發(fā)和Spring Boot應(yīng)用開發(fā)。假如我們開發(fā)一個(gè)Hello World的REST API,傳統(tǒng)的Spring開發(fā)應(yīng)該這么做。

1. 如果使用Maven進(jìn)行包管理,編寫pom.xml 如下

SpringBoot將推翻以往的Java應(yīng)用開發(fā)

SpringBoot將推翻以往的Java應(yīng)用開發(fā)

如上可以看到為了編寫簡(jiǎn)單的hello world REST API我們引入了Spring Core, Spring Web, Spring Web MVC, Java Servlet and Jackson這么多包依賴??梢韵胂髲?fù)雜一點(diǎn)的程序這個(gè)pom會(huì)變成什么樣。。。

2. 編寫HelloWorldInitializer class如下

SpringBoot將推翻以往的Java應(yīng)用開發(fā)

這個(gè)已經(jīng)是非常簡(jiǎn)單的Java Config了,在Servlet 3.0之前用XML配置Spring的小伙伴們現(xiàn)在估計(jì)已經(jīng)崩潰。

3. 編寫HelloWorldConfiguration class

SpringBoot將推翻以往的Java應(yīng)用開發(fā)

注意到我們這個(gè)類里面一行業(yè)務(wù)邏輯都沒有哦。。。

4. 真正開始編寫HelloWorldRestController

SpringBoot將推翻以往的Java應(yīng)用開發(fā)

5. 下載Tomcat

6. 打包部署到Tomcat上

7.訪問localhost:8080/HelloWorld, 你終于看到了Hello World…

寫到這里我已經(jīng)累覺不愛了。。。

接下來Java老司機(jī)會(huì)帶領(lǐng)你們感受一下Spring Boot的魅力:

1. 編寫pom.xml

SpringBoot將推翻以往的Java應(yīng)用開發(fā)

SpringBoot將推翻以往的Java應(yīng)用開發(fā)

注意到我們只引入了一個(gè)包依賴,并且版本什么的就隨他去吧

2. 編寫main 函數(shù)

我們?cè)谶@里標(biāo)記HelloWorldDemoApplication class為SpringBootApplication, Spring Boot 在后臺(tái)會(huì)根據(jù)這個(gè)標(biāo)記進(jìn)行很多自動(dòng)配置,比如配置MVC,配置包掃描,注入必要的類,注入自動(dòng)配置的類等等。

這里的main函數(shù)是一個(gè)java標(biāo)準(zhǔn)的main函數(shù),這個(gè)相當(dāng)于應(yīng)用程序入口,servlet container會(huì)在啟動(dòng)的時(shí)候找到這個(gè)入口,啟動(dòng)Spring container,完成初始化。

3. 編寫HelloWorldRestController

SpringBoot將推翻以往的Java應(yīng)用開發(fā)

4. 直接啟動(dòng)應(yīng)用程序,不需要部署

之前HelloWorld程序?qū)τ谛率謥碚f至少要花個(gè)10-20分鐘之類的,有了SpringBoot, 最多3分鐘之內(nèi)搞定HelloWorld不是夢(mèng)。

總結(jié)

這里我只是簡(jiǎn)單的對(duì)SpringBoot進(jìn)行了講解,SpringBoot有非常多值得深入討論的東西,它不僅讓我們做Java開發(fā)變的簡(jiǎn)單有效,更重要的是SpringBoot徹底顛覆了我們對(duì)Java開發(fā)的認(rèn)識(shí),讓我們第一次有了”原來Java開發(fā)可以這么做” 的感覺。有了SpringBoot之后,Java程序員可以更專注于業(yè)務(wù)邏輯,進(jìn)行更敏捷的開發(fā)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2946

    瀏覽量

    104361
  • SpringBoot
    +關(guān)注

    關(guān)注

    0

    文章

    173

    瀏覽量

    153
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    SpringBoot 如何實(shí)現(xiàn)熱部署

    熱部署是軟件開發(fā)中一個(gè)非常有用的功能,它允許我們?cè)诓恢匦聠?dòng)整個(gè)應(yīng)用的情況下,依舊能夠使我們修改的代碼生效。 現(xiàn)在Java Web 開發(fā)應(yīng)該都是使用的 SpringBoot,那么本篇文
    的頭像 發(fā)表于 09-30 10:16 ?776次閱讀
    <b class='flag-5'>SpringBoot</b> 如何實(shí)現(xiàn)熱部署

    SpringBoot 學(xué)習(xí)筆記

    SpringBoot 學(xué)習(xí)筆記 【整合JWT】添加依賴創(chuàng)建工具類登錄獲取jwt使用jwtDemo源碼參考資料添加依賴pom.xml...com.auth0java-jwt3.12.0
    發(fā)表于 07-01 07:27

    springboot集成mqtt

    springboot集成mqtt,大綱一.數(shù)據(jù)入庫1.數(shù)據(jù)入庫解決方案二.開發(fā)實(shí)時(shí)訂閱發(fā)布展示頁面1.及時(shí)通訊技術(shù)2.技術(shù)整合
    發(fā)表于 07-16 07:53

    怎樣去使用springboot

    怎樣去使用springboot呢?學(xué)習(xí)springboot需要懂得哪些?
    發(fā)表于 10-25 07:13

    怎樣去設(shè)計(jì)一個(gè)基于java ssm springboot的女士電商平臺(tái)系統(tǒng)

    java ssm springboot女士電商平臺(tái)10(源碼+sql+論文可運(yùn)行)主要設(shè)計(jì):登錄、注冊(cè)、商品瀏覽、分類管理、模糊查找、輪播圖、熱銷商品、購物車、訂單、訂單流程控制、用戶管理、修改密碼
    發(fā)表于 01-03 06:14

    關(guān)于SpringBoot如何優(yōu)雅的全局異常處理

    SpringBoot全局異常準(zhǔn)備說明:如果想直接獲取工程那么可以直接跳到底部,通過鏈接下載工程代碼。 開發(fā)準(zhǔn)備 環(huán)境要求JDK:1.8SpringBoot:1.5.17.RELEASE 首先還是
    的頭像 發(fā)表于 05-31 14:25 ?1595次閱讀
    關(guān)于<b class='flag-5'>SpringBoot</b>如何優(yōu)雅的全局異常處理

    基于java ssm springboot女士電商平臺(tái)系統(tǒng)源碼+文檔設(shè)計(jì)

    java ssm springboot女士電商平臺(tái)10(源碼+sql+論文可運(yùn)行)主要設(shè)計(jì):登錄、注冊(cè)、商品瀏覽、分類管理、模糊查找、輪播圖、熱銷商品、購物車、訂單、訂單流程控制、用戶管理、修改密碼
    發(fā)表于 01-11 16:08 ?11次下載
    基于<b class='flag-5'>java</b> ssm <b class='flag-5'>springboot</b>女士電商平臺(tái)系統(tǒng)源碼+文檔設(shè)計(jì)

    為什么開發(fā)人員認(rèn)為Java很復(fù)雜

    我擔(dān)任過架構(gòu)師、技術(shù)負(fù)責(zé)人以及高級(jí)開發(fā)工程師,在我的職業(yè)生涯中,Java是我主要使用的編程語言。近年來,我也有時(shí)會(huì)使用Go、Node.js和.Net技術(shù)。我發(fā)現(xiàn)Java,尤其是SpringBo
    的頭像 發(fā)表于 04-12 18:10 ?2013次閱讀

    什么是 SpringBoot

    本文從為什么要有 `SpringBoot`,以及 `SpringBoot` 到底方便在哪里開始入手,逐步分析了 `SpringBoot` 自動(dòng)裝配的原理,最后手寫了一個(gè)簡(jiǎn)單的 `start` 組件,通過實(shí)戰(zhàn)來體會(huì)了 `
    的頭像 發(fā)表于 04-07 11:28 ?1219次閱讀
    什么是 <b class='flag-5'>SpringBoot</b>?

    SpringBoot常用注解及使用方法1

    基于 SpringBoot 平臺(tái)開發(fā)的項(xiàng)目數(shù)不勝數(shù),與常規(guī)的基于`Spring`開發(fā)的項(xiàng)目最大的不同之處,SpringBoot 里面提供了大量的注解用于快速
    的頭像 發(fā)表于 04-07 11:51 ?637次閱讀

    SpringBoot常用注解及使用方法2

    基于 SpringBoot 平臺(tái)開發(fā)的項(xiàng)目數(shù)不勝數(shù),與常規(guī)的基于Spring開發(fā)的項(xiàng)目最大的不同之處,SpringBoot 里面提供了大量的注解用于快速
    的頭像 發(fā)表于 04-07 11:52 ?602次閱讀

    SpringBoot為什么出現(xiàn)?

    在介紹 SpringBoot 之前我們首先來簡(jiǎn)單介紹一下 Spring。Spring 是誕生于2002年的 Java 開發(fā)框架,可以說已經(jīng)成為 Java
    的頭像 發(fā)表于 04-07 14:39 ?924次閱讀
    <b class='flag-5'>SpringBoot</b>為什么出現(xiàn)?

    Quarkus是SpringBoot的替代品嗎?

    SpringBoot框架不用多介紹,Java程序員想必都知道。相對(duì)來說熟悉Quarkus的人可能會(huì)少一些。Quarkus首頁放出的標(biāo)語:超音速亞原子的Java(Supersonic Subatomic
    的頭像 發(fā)表于 11-10 10:01 ?655次閱讀
    Quarkus是<b class='flag-5'>SpringBoot</b>的替代品嗎?

    javaweb和springboot能一起用嗎

    JavaWeb 和 SpringBoot 是兩種針對(duì) Java 程序開發(fā)的框架,它們可以在一起使用。在本文中,我詳細(xì)介紹 JavaWeb 和 Sp
    的頭像 發(fā)表于 11-16 10:54 ?1848次閱讀

    基于springboot和vue框架的Java

    本文詳細(xì)介紹基于Spring Boot和Vue框架進(jìn)行Java應(yīng)用開發(fā)的實(shí)踐。首先,介紹Spring Boot和Vue框架的基本概念及其優(yōu)點(diǎn)。然后,
    的頭像 發(fā)表于 12-03 15:15 ?881次閱讀