自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用Spring Boot顛覆Java應(yīng)用開(kāi)發(fā)

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

[[173527]]

Java開(kāi)發(fā)概述:

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

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

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

什么是Spring Boot?

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

  • 直接嵌入Tomcat, Jetty或者Undertow作為Servlet container。從此之后再也不用將應(yīng)用程序打包成war然后上傳到application server里面了。
  • 提供了starter POM, 能夠非常方便的進(jìn)行包管理, 很大程度上減少了jar hell或者dependency hell
  • 自動(dòng)進(jìn)行Spring框架的配置,節(jié)省程序員大量的時(shí)間和精力,能夠讓程序員專注在業(yè)務(wù)邏輯代碼的編寫上
  • 不需要任何第三方系統(tǒng), Spring Boot自帶了可以用于生產(chǎn)環(huán)境的程序狀態(tài)信息和健康狀態(tài)。同時(shí)可以讓應(yīng)用程序非常方便的讀取外部的配置信息
  • 完全不需要任何代碼的自動(dòng)生成。更不需要用xml來(lái)進(jìn)行框架的配置

為什么Spring Boot是顛覆性的?

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

[[173528]]

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

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

[[173529]]

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

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

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

如上可以看到為了編寫簡(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如下

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

3. 編寫HelloWorldConfiguration class

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

4. 真正開(kāi)始編寫HelloWorldRestController

5. 下載Tomcat

6. 打包部署到Tomcat上

7.訪問(wèn)localhost:8080/HelloWorld, 你終于看到了Hello World…

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

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

[[173530]]

1. 編寫pom.xml

注意到我們只引入了一個(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

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

5. 訪問(wèn) http:// localhost:8080 就可以直接看到Hello World了

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

總結(jié)

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

責(zé)任編輯:武曉燕 來(lái)源: 推酷
相關(guān)推薦

2018-05-25 16:32:45

Spring BootJava開(kāi)發(fā)

2018-05-31 15:30:11

JavaSpring Boot應(yīng)用開(kāi)發(fā)

2022-11-09 07:49:12

Records類聲明代碼

2019-01-15 11:40:14

開(kāi)發(fā)技能代碼

2017-09-20 09:46:38

Spring BootSpring Clou內(nèi)存

2025-04-27 01:55:44

SpringConfigData配置

2024-06-13 09:17:41

2024-06-04 10:37:06

2025-02-05 12:28:44

2017-08-02 14:44:06

Spring Boot開(kāi)發(fā)注解

2018-12-07 15:50:52

Java編程語(yǔ)言框架

2023-10-16 23:06:26

2024-09-30 11:51:07

2018-10-22 15:34:31

Spring Boo監(jiān)控視化

2022-02-09 20:39:52

Actuator應(yīng)用監(jiān)控

2022-01-20 15:33:30

區(qū)塊鏈創(chuàng)新初創(chuàng)公司

2016-11-03 09:59:38

kotlinjavaspring

2019-03-28 11:07:56

Spring BootRedis緩存

2017-03-06 15:43:33

Springboot啟動(dòng)

2023-10-06 19:21:49

Initializr應(yīng)用Spring
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)