利用Maven入手Spring Boot第一個程式詳解,mavenspring

來源:互聯網
上載者:User

利用Maven入手Spring Boot第一個程式詳解,mavenspring

前言

學習一個新技術,先別管他的原理啊,流程啊,怎麼組織代碼啊什麼的。直接從官網或者部落格抄一個小demo,自己親自跑一遍,然後再去看那一堆讓人頭皮發麻的講解,就能相對容易的看懂了。

目前網上有不少Spring Boot的入門文章,都很有協助,本人最近在深入學習Spring Cloud,在搭建第一個Hello World程式時,感覺對於新手而言,介紹文章怎麼詳細都不為過,因為其中坑不少,所以這裡就把第一次實踐的步驟貼出來,以求和大家一起進步。

1、Maven是什嗎?能帶來什麼協助?

    我們在用Eclipse開發項目時,一定會引入支援特定功能的jar包,比如從裡,我們能看到這個項目需要引入支援mysql的jar包。

 

從裡我們能看到,支援mysql的jar包是放在本地路徑裡,這樣如果在本地運行自然是沒問題了。但如果我們要把這個項目發布到伺服器上,就會有問題了,因為在這個項目的.classpath檔案,已經指定mysql的jar包在本地d盤下的某個路徑,如所示。

一旦發布到伺服器上,項目依然會根據.classpath的配置,從d盤下這個路徑去找,事實上伺服器上是不可能有這樣的路徑和jar包的。

我們也可以通過在.classpath裡指定相對路徑來解決這個問題,在下面的代碼裡,我們可以指定本項目將引入“本項目路徑/WebRoot/lib“目錄裡的jar包。

  <classpathentry kind="lib" path="WebRoot/lib/jar包名.jar"/>

這樣做,發布到伺服器時,由於會把整個項目路徑裡的檔案都上傳,所以不會出錯。但這樣依然會給我們帶來不便。比如這個伺服器上我們部署了5個項目,它們都會用到這個mysql支援包,這樣我們就不得不把這個jar包上傳5次,再擴充一下,如果5個項目裡會用到20個相同的jar包,那麼我們還真就不得不做多次複製。如果我們要升級其中的一個jar包,那麼還真就得做很多重複的複製粘貼動作。

期望中的工作模式應該是,應該有個“倉庫“同一放置所有的jar包,在開發項目時,可以通過設定檔引入必要的包,而不是把包複製到本項目裡。這就是Maven的做法。

用通俗的話來講,Maven是套Eclipse的外掛程式,它的核心價值是能理順項目間的依賴關係,具體來講,能通過其中的pom.xml設定檔來統一管理本項目所要用到的jar包,在項目裡引入Maven外掛程式後,開發人員就不必手動添加jar包了,這樣也能避免因此來帶來的一系列問題。

2、通過Maven開發Spring Boot的HelloWorld程式

第一步,建立Maven項目。本書使用MyEclipse作為開發環境,在其中已經引入了Maven外掛程式,所以我們可以通過“File”->”New”菜單,如所示,直接建立Maven項目。

在裡,點擊“Next”按鈕後,會見到如所示的介面,在其中我們可以設定Group Id等屬性。

   

其中,Group Id代表公司名,這裡設定成“com.springBoot”,而Artifact Id則是項目名,Version和Packag採用預設值。完成設定後,能看到建立的項目MyFirstSpringBoot

第二步,改寫pom.xml。當我們建立好Maven項目後,能看到pom.xml檔案。在Maven項目裡,一般是通過pom.xml來指定本項目的基本資料以及需要引入的jar包,這裡的關鍵代碼如下。  

<groupId>com.springboot</groupId> <artifactId>MyFirstSpringBoot</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>MyFirstSpringBoot</name> <url>http://maven.apache.org</url> <dependencies> <dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-web</artifactId>  <version>1.5.4.RELEASE</version> </dependency> <dependency>  <groupId>junit</groupId>  <artifactId>junit</artifactId>  <version>3.8.1</version>  <scope>test</scope> </dependency> </dependencies>

其中,第1到第4行的代碼是自動產生的,用來指定本項目的基本資料,這和我們在之前建立Maven項目時所填的資訊是一致的。

從第7到第19行的dependencies屬性裡,我們可以指定本項目所用到的jar包,這裡在第8和第13行分別通過兩個dependency來指定該引入兩類jar包。其中從第8到12行,指定了需要引入用以開發Spring Boot項目的名為spring-boot-starter-web的jar的集合,而在第13到18行,指定了需要引入用以單元測試的junit包。

從中上述代碼裡,我們能見到通過Maven管理項目依賴檔案的一般方式,比如在下面的程式碼片段裡,是通過第2到第4行的代碼,說明需要引入org.springframework.boot這個公司組織(發布Spring Boot jar包的組織)發布的名為spring-boot-starter-web的一套支援Spring Boot的jar包,而且通過第4行指定了引入包的版本號碼是1.5.4.RELEASE。

這樣一來,在本項目裡,我們就無需在本地在手動地添加jar包,這些包事實上是在遠端的倉庫裡,我們這個項目是通過pom.xml的配置,來指定需要引入這些包。

第三步,改寫App.java。

在建立Maven項目時,我們指定的package是com.springboot.MyFirstSpringBoot,在其中會有個App.java,我們把這個檔案改寫成如下的樣式。   

package com.springboot.MyFirstSpringBoot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;  @RestController @SpringBootApplication public class App { @RequestMapping("/HelloWorld") public String sayHello() {  return "Hello World!"; } public static void main(String[] args) {  SpringApplication.run(App.class, args); } }

由於是第一次使用Maven,我們在這裡再強調一次,雖然我們沒有在項目裏手動地引入jar,但由於在pom.xml裡指定了待引入的依賴包,具體而言需要依賴org.springframework.boot組織所提供的spring-boot-starter-web,所以在代碼的第2到第5行裡,我們可以通過import語句,使用spring-boot-starter-web(也就是Spring Boot)的類庫。

在第8行裡,我們引入了@SpringBootApplication註解,以此聲明該類是個Spring Boot的應用。在第10到第13行裡,我們通過@RequestMapping,指定了用於處理/HelloWorld請求的sayHello方法,在第14行的main函數裡,我們通過第15行的代碼啟動了Web服務。

至此我們完成了代碼編寫工作。啟動MyFirstSpringBoot項目裡的App.java,在瀏覽器裡輸入http://localhost:8080/HelloWorld。由於/HelloWorld請求能被第11到13行的sayHello方法的@RequestMapping對應上,所以會通過sayHello方法輸出Hello World!的內容,如所示。

   

從這個程式裡我們能體會到開發Spring Boot和傳統Spring程式的不同。

第一,在之前的Spring MVC架構裡,我們不得不在web.xml定義採用Spring的監聽器,而且為了採用@Controller控制器類,我們還得加上一大堆配置,但在Spring Boot裡,我們只需要添加一個@SpringBootApplication註解。

第二,我們往往需要把傳統的Spring MVC項目發布到諸如Tomcat的Web伺服器上,啟動Web伺服器後我們才能在瀏覽器裡輸入請求查看啟動並執行效果,這裡我們只需啟動App.java這個類即可達到類似的效果,就可以省去部署到Web伺服器上的步驟。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對幫客之家的支援。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.