溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot快速搭建web項目的示例

發(fā)布時間:2021-02-18 10:32:50 來源:億速云 閱讀:272 作者:小新 欄目:編程語言

小編給大家分享一下SpringBoot快速搭建web項目的示例,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

如何快速搭建一個spring MVC項目

一、初識spring boot

1、web項目傳統(tǒng)的搭建方式

導入jar包,配置tomcat 的context.xml 、web.xml,配置class path ,啟動。我靠,怎么一堆報錯?classNotFoundException?尼瑪哥不是導入了jar包嗎,哦版本不對,那我使用maven管理jar包咯,千辛萬苦終于配置好maven 并學會了如何使用,啟動也沒報錯了,但是尼瑪已經(jīng)過去打半天了我都還沒有開始正式代碼的書寫,趕緊開始寫業(yè)務代碼吧,又發(fā)現(xiàn)spring 中配置老是尼瑪?shù)膱箦e,而我他媽只是想要搞個簡單的發(fā)郵件功能啊。

所以說,自己搭建web項目,很多步驟都是重復性的,有沒有什么工具可以一步達成???我只想快點投入到實際業(yè)務開發(fā)中去,我再也不想折騰jar包版本問題,再也不想折騰那繁瑣的配置過程(雖然這是一個很好的學習過程),那么,spring boot 估計是老鐵你不二的選擇!

2、spring boot 是什么?

什么是spring boot?直接copy官網(wǎng)的介紹:

SpringBoot快速搭建web項目的示例

原諒我并不咋地的英文,官網(wǎng)說,spring boot 可以讓你以一種非常簡單的方式構建一個機遇Application 的spring 項目,而你索要做的僅僅是run 這個項目,spring boot 集成了主流的框架,我們構建項目大概只需要兩三分鐘,spring boot 項目,只需要很少的配置即可。

用了spring boot 后,你會發(fā)現(xiàn),什么配置問題,什么jar包問題統(tǒng)統(tǒng)沒有了,你的生產效力會提高很多,因為,spring boot 已經(jīng)幫你弄好了一個項目原型,你只需要在這個原型上添加自己的業(yè)務代碼,自己的service 和dao就萬事大吉了!

spring boot 真的有那么厲害?好,下面就開始進入正題,說說怎么搭建利用spring boot搭建項目。

二、spring boot 項目快速搭建

1、快速搭建一個spring MVC項目

來開頭來個Hello World先吧,下面緊跟我的步伐,利用spring boot 快速搭建一個MVC項目

第一步,上官網(wǎng),進行項目原始jar 包的選取,官網(wǎng)在線搭建地址如下:https://start.spring.io/,看圖:

SpringBoot快速搭建web項目的示例

特別說明下:在選擇你要的jar 包中,一般包括三部分:web部分--包含 了spring、springboot 等常用的web開發(fā)必須jar包;spring提供的工具類部分(devTool),這個用于熱部署效果;數(shù)據(jù)庫部分,spring boot自動可以幫你繼承各種數(shù)據(jù)庫框架,我這里以mybatis 為演示例子,最后選完jar包的效果如下:

SpringBoot快速搭建web項目的示例

第二步、下載項目并導入IDE,當然,需要版本管理工具的支持,這里推薦IntelliJ IDEA 開發(fā)工具(它簡直就是web開發(fā)的標配!),具體看下面截圖:

  SpringBoot快速搭建web項目的示例

解壓后得到項目文件SpringBoot快速搭建web項目的示例,然后,就可以打開我們的IDE,這里已我最愛的IntelliJ idea為例子

打開idea,找到file-->open-->選擇項目的路徑,找打pom文件-->以project 形式打開

SpringBoot快速搭建web項目的示例

SpringBoot快速搭建web項目的示例

第三步、hello spring項目 大概長什么樣子?打開項目之后,maven 會加載必須的jar包,這段時間,你可以去喝杯香醇的龍井茶或者咖啡,當項目構建完成之后,你會看到下面這樣的典型maven目錄結構:

SpringBoot快速搭建web項目的示例

具體各個目錄放什么,請參考截圖,這里補充說明的是,HelloSpringbootApplication是整個項目的入口,我們啟動項目不再是啟動tomcat,而是運行這個類,這個類的main方法就是整個項目的main方法即執(zhí)行入口,

第四步,寫hello demo了。新建一個package demo,然后新建一個類HelloSpringBoot,寫入以下代碼

@RestController
public class HelloSpringBoot {
  @RequestMapping(path = {"/helloSpringBoot"})
  public String HelloSpring (){
    System.out.println("hello spring boot");
    return "hello spring boot";
  }
}

我們先不解釋這個類里面的東西,先配置并啟動網(wǎng)站,初步感受下spring boot的魔力:

在啟動網(wǎng)站前,由于spring boot 是默認自動注冊加載數(shù)據(jù)庫相關的類文件的,所以為了不報錯,我們需要打開數(shù)據(jù)庫并在resource目錄下的application.property中加入數(shù)據(jù)庫配置相關文件,這里以mysql為例子,配置文件如下:

spring.datasource.url=jdbc:mysql://localhost:3306/wenda?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root

配置文件中各個字段含義估計讀者也能看懂,后面會再具體說明。

當然,如果沒有安裝數(shù)據(jù)庫,讀者也可以在HelloSpringbootApplication 類中利用exclude屬性聲明不自動注冊加載數(shù)據(jù)庫相關文件,具體參考下面的代碼:

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,MybatisAutoConfiguration.class})//這里的MybatisAutoConfiguration.class對應你的數(shù)據(jù)庫框架
public class HelloSpringbootApplication {

  public static void main(String[] args) {
    SpringApplication.run(HelloSpringbootApplication.class, args);
  }
}

然后,我們所有的工作就完成了,可以啟動網(wǎng)站了,見證奇跡的時候到了。

找到HelloSpringbootApplication類,雙擊打卡,右擊鼠標,run,然后項目就啟動了。

SpringBoot快速搭建web項目的示例

啟動網(wǎng)站之后,輸入http://localhost:8080/helloSpringBoot即可訪問對應的方法。瀏覽器以及idea后臺效果如圖

SpringBoot快速搭建web項目的示例

SpringBoot快速搭建web項目的示例

這里簡單解釋下這個類里面的東西的含義:

首先是@RestController這個注解:用過spring的大佬估計知道是什么東西,當我們其他類要通過spring引用該類時,第一步就是要將該類注冊到spring中,@RestController就是相當于將這個類注冊到spring容器的意思當然,還有一種比較常用的就是@Controller,具體他們兩區(qū)別后面再討論吧。

然后就是@RequestMapping,通過設置這個注解里面面的path屬性,就可以聲明相對于項目根路徑(localhost:8080)的訪問路徑。

2、spring boot 項目中利用springMVC實現(xiàn)傳參

上面的demo中的方法只是一個非常簡單的實例,在實際生產中, 我們的應用不可能這么簡單的,前端還需要傳輸參數(shù)到后臺,所以,用spring boot 構造的項目中,又如何實現(xiàn)傳參呢?(感覺下面的都是在總結sprign MVC相關的內內容了,所以大神勿噴我脫離主題,因為感覺spring boot 如果單獨總結的話,貌似的確沒什么好總結的,而且spring boot 天生就不可能和其他spring 組件分割)具體請參開下面代碼例子:

@RestController
public class HelloSpringBoot {/**
   * url傳參,訪問的路徑類似這樣:localhost:8080/getParamDemo1/1
   * 方法體中的參數(shù)要在前面加注釋,@PathVariable,代表url中的參數(shù)
   */
  @RequestMapping(path = {"/getParamDemo1/{id}"})
  public String getParamDemo1 (@PathVariable("id") int userId){
    System.out.println("get param " + userId);
    return "success get param";
  }
  /**
   * 當然,你也可以通過這種傳參方式:localhost:8080/getParamDemo?param1=1或者直接表單提交參數(shù)
   * 當然,同時方法中參數(shù)聲明的注釋也要變成@RequestParam,代表請求參數(shù),required屬性說明了參數(shù)是否是必須的
   */
  @RequestMapping(path = {"/getParamDemo2"})
  public String getParamDemo2 (@RequestParam(value="param1",required = false) int param){
    System.out.println("get param " + param);
    return "success get param";
  }
}

3、構建restful編程風格

最近,resultful風格編程挺火的(雖然個人覺得不可盲目跟風),而spring boot中利用其內置的spring MVC等框架,可以非常簡單地實現(xiàn)這種編程風格。

例如說,我要請求查詢一個數(shù)據(jù),在resultful類的編程風格中,查詢對應的是get請求,那么,spring boot(準確說是spring MVC) 可以針對不同的請求進行處理,請看下面代碼:

@RestController
public class HelloSpringBoot {

  /**
   * 通過設置RequestMapping的method屬性便可以設置該方法可處理的對應請求了,例如下面的getRequestDemo方法只會處理get請求
   */
  @RequestMapping(path = {"/getRequestDemo"},method = RequestMethod.GET)
  public String getRequestDemo (@RequestParam(value="param1",required = false) int param){
    System.out.println("get request test ,get param " + param);
    return "success get param";
  }
  /**
   * 下面的deleteRequestDemo方法只會處理delete請求
   */
  @RequestMapping(path = {"/deleteRequestDemo"},method = RequestMethod.DELETE)
  public String deleteRequestDemo (@RequestParam(value="param1",required = false) int param){
    System.out.println("delete request test ,get param " + param);
    return "success get param";
  }
}

另外,利用上面說的url中的值(類似這個:path="/member/{userid}")進行資源定位,也非常符合resultful的風格要求,例如這path="/getParamDemo1/{userid}"的配置就是對應的就是對會員級別的某個用戶(由userid定位)進行某些操作,如果要刪除該用戶,則對應http請求的delete請求即可。

通過上面的那些步驟,估計讀者對于如何用spring boot 進行一個簡單的web項目快速搭建已經(jīng)清楚了,下面在spring boot搭建的項目中如何進行單元測試。

三、spring boot 項目中的單元測試問題

spring boot 中集成了junite框架,對于單元測試,也不用寫各種繁瑣的類了,只需要對測試類進行一定的注釋,spring boot 便會幫你做好一切,就算是數(shù)據(jù)庫相關的操作,spring boot 也能很好地進行測試,具體還是看代碼例子,下面是一個簡單的測試業(yè)務類方法的例子:

首先,我們新建一個service 層,新增一個demo類,最后的demo代碼如下:

@Component
public class ServiceDemo {
  public String testDemo(){
    String rtnAfterDosomething = "我是返回結果";
    //這里是業(yè)務代碼
    return rtnAfterDosomething;
  }
}

下面的代碼是測試類

@RunWith(SpringRunner.class)
@SpringBootTest
public class ServiceDemoTest {
  @Autowired
  ServiceDemo serviceDemo;
  @Test
  public void testDemo() {
    String rtn = serviceDemo.testDemo();
    Assert.assertEquals(rtn, "我是返回結果");
  }

}

如果要測試數(shù)據(jù)庫dao,也是類似的,但是特別注意的是,測試之前必須啟動項目(即HelloSpringbootApplication的run方法必須運行起來),否則將會包can not find ApplicationContext的錯誤。

四、spring boot中配置數(shù)據(jù)庫框架(以mybatis為例子)

在spring boot中集成數(shù)據(jù)庫相關的開源框架也是很方便的(當然,記得在一開始新建項目的時候引用相關的jar包),當你上面的步驟都沒什么錯誤的時候,你只需要簡單地配置下applocation.properties文件即可

spring.datasource.url=jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
#下面這條配置聲明了mybatis的配置文件路徑,classpath對應的是和這個文件統(tǒng)計的resources
mybatis.config-location=classpath:mybatis-config.xml

目錄的文件結構參考下面截圖:

SpringBoot快速搭建web項目的示例

ok,mybatis 的引用配置便弄好了,下面我們嘗試利用mybatis 這個數(shù)據(jù)庫框架,進行一個數(shù)據(jù)庫的簡單查詢操作,首先,看下面的mybatis-config.xml的配置內容,讀者可以以這個為模板進行配置,當然,想了解更具體的mybatis配置說明,建議去官網(wǎng)看看,這里不展開了:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

  <settings>
    <!-- Globally enables or disables any caches configured in any mapper under this configuration -->
    <setting name="cacheEnabled" value="true"/>
    <!-- Sets the number of seconds the driver will wait for a response from the database -->
    <setting name="defaultStatementTimeout" value="3000"/>
    <!-- Enables automatic mapping from classic database column names A_COLUMN to camel case classic Java property names aColumn -->
    <setting name="mapUnderscoreToCamelCase" value="true"/>
    <!-- Allows JDBC support for generated keys. A compatible driver is required.
    This setting   forces generated keys to be used if set to true,
     as some drivers deny compatibility but still work -->
    <setting name="useGeneratedKeys" value="true"/>
  </settings>

  <!-- Continue going here -->

</configuration>

恩,然后,就可以進行數(shù)據(jù)庫的操作了,我簡單用mysql建了個名字為springboot的數(shù)據(jù)庫,在庫里面建了一個簡單的demo表(具體怎么建表那些不用我說了吧?實在沒有接觸過數(shù)據(jù)庫的同學,可以自行百度或者谷歌去咯),然后,dao代碼如下:

@Mapper
public interface DemoDao {
  @Select({"select demo_param from demo "})
  String queryDemo();
}

注意,mybatis 的dao是一個接口,關于mybatis更多的內容,請讀者參開官方文檔,這里不展開了。

然后,就在原來的ServiceDemo類中調用一下吧,代碼看下圖吧: 

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import springboot.hello.helloSpringboot.dao.DemoDao;

@Component
public class ServiceDemo {
  @Autowired
  DemoDao demoDao;
  public String testDemo(){
    String rtnAfterDosomething = "我是返回結果";
    //這里是業(yè)務代碼
    return rtnAfterDosomething;
  }
  public String queryDemo(){
    return demoDao.queryDemo();
  }
}

ok,簡單寫個測試類,出現(xiàn)小綠條,測試成功。

以上是“SpringBoot快速搭建web項目的示例”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI