1. 程式人生 > >IDEA 搭建一個springboot2 webflux專案

IDEA 搭建一個springboot2 webflux專案

    最近考完PMP,研究了一套新東西,雖然之前的spring boot1 的專案還沒寫完,但是之後慢慢把東西遷移到這個專案吧。

    同時也轉戰了IDEA,說實在的剛開始上手挺費勁的,不過用習慣了以後在迴歸到eclipse,操作一下頓卡一下,真是感覺藍瘦香菇。老婆也說:不能總待在eclipse的舒適區吧,所以決心用下去。也該跳出來見見世面了。哈哈。

1,簡單介紹一點springboot2 webflux

網上一搜有一堆介紹,我就不貼上了。說說我的簡單理解,webflux和webmvc是spring5支援的兩種訪問方式。MVC是基於之前的方式,進一個請求,處理後返回,屬於阻塞的,之前的容器是tomcat;而webflux是基於servlet3.1,可以進行非同步非阻塞的訪問。大大增加併發量,使在同樣的硬體基礎上,能比MVC方式允許更大的併發量。預設容器為netty。webflux和webmvc之間的區別從maven依賴就可以看得出來。

webfllux基於JDK8中的lambda表示式+JDK中的reactive stream(Flow API)響應式流,兩種結合而來。

lambda表示式之前也簡單寫過,附傳送門:lambda表示式

reactive stream 雖然也有stream,但是他跟lambda沒有關係,他是JDK9中一套基於釋出者和訂閱者的’一種模式。具體的等我研究透徹回來開個單獨的來寫。

webflux架構有兩種程式碼風格,一種是通過路由來轉發請求,寫起來跟MVC風格可以說完全不一樣了;但是spring也將他融入了原來mvc開發的方式,使我們用起來會比較順手。

還有一個問題就是目前的webflux暫時不支援mysql這類的關係型資料庫,所以先試著用nosql資料庫mongodb。

下面開始準備環境。JDK安裝,maven安裝等不贅述了。

2,下載安裝IDEA

    這個不多說了,附上下載連結:

    我用的社群版本,下面就以社群版本為例了。

3,配置IDEA

    下載安裝之後應該會到這個介面:

這裡我們分幾步:

    1,配置JDK

    右下角,Configure——>Project Defaults——>Project Structure;或者直接使用快捷鍵:Ctrl+Shift+Alt+S

點選加號,選擇JDK,選擇JDK安裝目錄即可。

    2,配置maven

右下角,Configure——>Settings——>右側找到build,Execution,Deployment——>Maven

按照這個配置即可。選擇maven路徑;然後配置你的settings.xml檔案;

    3,配置lombok外掛

這個之前我寫了篇文章,裡面有介紹。不多說,附上傳送門。lombok的安裝與使用

    4,配置springboot外掛

右下角,Configure——>Plugins,社群版本搜尋Spring Assistant,收費版好像是搜尋spring boot,我沒用有待求證。

點選Install,安裝。

先說這幾個,後面用到git,或者其他外掛配置,再說。

全部安裝完重啟之後,開始構建我們的springboot2專案。

4,建立專案

先說環境:

    JDK10(11剛釋出,而且這是一個長期版本,所以之後可能會考慮換到JDK11)

    maven3.5.0

    springboot 版本2.0.5

過程比較簡單,多為截圖跟著走就行了。

這裡選擇和你之前選的JDK版本改成 一致。

選擇你要使用的依賴。在下面選擇路徑,完成即可。等待自動構建就行了。

看一下pom.xml

        <!-- 支援stream的mongodb 依賴-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb-reactive</artifactId>
        </dependency>

        <!--基於stream + fluxAPI 的 webflux依賴-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>

mongodb依賴帶有-reactive

原來的web依賴也換成了webflux依賴

這個時候,一個專案已經生成完畢。我們直接寫一個controller測試一下通不通即可。

程式碼:

@RestController
@RequestMapping("/user")
public class UserController {

    @GetMapping("/test")
    public Mono<String> test(){
        return Mono.just("test wm");
    }
}

啟動專案:

這裡發現,springboot2的預設容器已經有tomcat變成了支援非阻塞的netty。

結果:

這樣我們一個springboot2的webflux+mongodb專案就搭建完成了。可以看到這裡使用的還是MVC開發風格,只不過Mono沒見過,之後會介紹有關內容。webflux的路由後面的文章會有介紹。