成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

慕課網(wǎng)_《Spring Boot 2.0深度實踐-初遇Spring Boot》學習總結(jié)

hqman / 3693人閱讀

時間:2018年04月08日星期日
說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):https://www.imooc.com
教學源碼:無
學習源碼:https://github.com/zccodere/s...

第一章:課程介紹 1-1 課程介紹

課程內(nèi)容

Spring Boot介紹

環(huán)境準備

第一個Spring Boot項目

多模塊項目

打包和運行

1-2 框架定位

1-3 特性介紹

2.0 新特性

編程語言:Java 8及以上

底層框架:Spring Framework 5.0.0及以上

全新特性:Web Flux

為什么選擇Web Flux

函數(shù)編程:Java8 Lambda

響應編程:Reactive Streams

異步編程:Servlet 3.1或Asyn NIO

第二章:簡單項目 2-1 環(huán)境準備

開發(fā)環(huán)境

安裝JDK(https://java.oracle.com)

安裝Maven(https://maven.apache.org)

安裝IDEA(https://www.jetbrains.com/idea)

2-2 構(gòu)建項目

簡單應用

編寫REST程序

運行Spring Boot應用

使用Http請求工具Postman

場景說明

定義用戶模型,包括屬性:用戶ID和名稱

客戶端發(fā)送POST請求,創(chuàng)建用戶(Web MVC)

客戶端發(fā)送GET請求,獲取所有用戶(Web Flux)

代碼編寫

1.創(chuàng)建名為boot-simple的maven工程pom如下



    4.0.0

    com.myimooc
    boot-simple
    0.0.1-SNAPSHOT
    jar

    boot-simple
    Demo project for Spring Boot

    
        org.springframework.boot
        spring-boot-starter-parent
        2.0.1.RELEASE
         
    

    
        UTF-8
        UTF-8
        1.8
    

    
        
            org.springframework.boot
            spring-boot-starter-webflux
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    



2.完成后的項目結(jié)構(gòu)如下

3.編寫B(tài)ootSimpleApplication類

package com.myimooc.boot.simple;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * 
* 標題: 啟動類
* 描述: 簡單應用
* * @author zc * @date 2018/04/08 */ @SpringBootApplication public class BootSimpleApplication { public static void main(String[] args) { SpringApplication.run(BootSimpleApplication.class, args); } }

4.編寫User類

package com.myimooc.boot.simple.domain;

import java.io.Serializable;

/**
 * 
* 標題: 用戶模型
* 描述: POJO類
* * @author zc * @date 2018/04/08 */ public class User implements Serializable{ private static final long serialVersionUID = 7564986345486454458L; /** * 主鍵ID */ private Integer id; /** * 用戶名稱 */ private String name; @Override public String toString() { return "User{" + "id=" + id + ", name="" + name + """ + "}"; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }

5.編寫UserRepository類

package com.myimooc.boot.simple.repository;

import com.myimooc.boot.simple.domain.User;
import org.springframework.stereotype.Repository;

import java.util.Collection;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * 
* 標題: 用戶資源庫
* 描述: 領(lǐng)域驅(qū)動模型開發(fā)
* * @author zc * @date 2018/04/08 * {@link User} {@link Repository} */ @Repository public class UserRepository { /** * 采用內(nèi)存型存儲方式 */ private final ConcurrentMap repository = new ConcurrentHashMap<>(16); private final static AtomicInteger ID_GENERATOR = new AtomicInteger(); /** * 保存用戶對象 * @param user {@link User} * @return 如果成功返回true,否則,返回false */ public boolean save(User user){ // ID 從 1 開始 Integer id = ID_GENERATOR.incrementAndGet(); user.setId(id); // put 方法返回 null 時表示保存成功 return repository.put(id,user) == null; } /** * 返回所有用戶列表 * @return 所有用戶列表 */ public Collection findAll(){ return repository.values(); } }

6.編寫UserController類

package com.myimooc.boot.simple.controller;

import com.myimooc.boot.simple.domain.User;
import com.myimooc.boot.simple.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * 
* 標題: 用戶 REST 接口
* 描述: RESTFul 格式
* * @author zc * @date 2018/04/08 */ @RestController public class UserController { private final UserRepository userRepository; @Autowired public UserController(UserRepository userRepository){ this.userRepository = userRepository; } @PostMapping("/person/save") public User save(@RequestParam String name){ User user = new User(); user.setName(name); if (userRepository.save(user)){ System.out.printf("用戶對象: %s 保存成功 ",user); } return user; } }

7.編寫RouterFunctionConfiguration類

package com.myimooc.boot.simple.config;

import com.myimooc.boot.simple.domain.User;
import com.myimooc.boot.simple.repository.UserRepository;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.reactive.function.server.*;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

import java.util.Collection;

/**
 * 
* 標題: 路由器函數(shù)配置
* 描述: 配置映射
* * @author zc * @date 2018/04/08 */ @Configuration public class RouterFunctionConfiguration { /** * Servlet 規(guī)范 * 請求接口:ServletRequest 或者 HttpServletRequest * 響應接口:ServletResponse 或者 HttpServletResponse * * Spring 5.0 重新定義了服務請求的響應接口 * 請求接口:ServerRequest * 響應接口:ServerResponse * 即可支持 Servlet 規(guī)范,也可以支持自定義,比如 Netty (Web Server) * 以本例 * 定義 GET 請求,并且放回所有的用戶對象 URI:/person/find/all * Flux 是 0 - N 個對象集合 * Mono 是 0 - 1 個對象集合 * Reactive 中的 Flux 或者 Mono 是異步處理(非阻塞) * 集合對象基本上是同步處理(阻塞) * Flux 或者 Mono 都是 Publisher */ @Bean public RouterFunction personFindAll(UserRepository userRepository){ Collection users = userRepository.findAll(); return RouterFunctions.route(RequestPredicates.GET("/person/find/all"), request -> { Flux userFlux = Flux.fromIterable(users); return ServerResponse.ok().body(userFlux,User.class); }); } }
第三章:簡單使用 3-1 模塊拆分

多模塊重構(gòu)

調(diào)整父模塊工程類型(packageing)

創(chuàng)建子模塊工程(module)

子模塊依賴管理(dependencyManagement)

完成后的結(jié)構(gòu)如下

第四章:課程總結(jié) 4-1 課程總結(jié)

主要內(nèi)容

Spring Boot 介紹

Spring Boot 項目

Spring Boot 模塊

Spring Boot 打包

Spring Boot 運行

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/68992.html

相關(guān)文章

  • 《Java編程方法論:響應式RxJava與代碼設計實戰(zhàn)》序

    摘要:原文鏈接編程方法論響應式與代碼設計實戰(zhàn)序,來自于微信公眾號次靈均閣正文內(nèi)容在一月的架構(gòu)和設計趨勢報告中,響應式編程和函數(shù)式仍舊編列在第一季度的早期采納者中。 原文鏈接:《Java編程方法論:響應式RxJava與代碼設計實戰(zhàn)》序,來自于微信公眾號:次靈均閣 正文內(nèi)容 在《2019 一月的InfoQ 架構(gòu)和設計趨勢報告》1中,響應式編程(Reactive Programming)和函數(shù)式...

    PAMPANG 評論0 收藏0
  • Dubbo Spring Cloud 重塑微服務治理

    摘要:在服務治理方面,相較于而言,并不成熟。遺憾的是,往往被部分開發(fā)者片面地視作服務治理的框架,而非微服務基礎設施。因此,建議開發(fā)人員將或者遷移為服務。因此,下一步需要將其配置服務遠程。當服務提供方啟動后,下一步實現(xiàn)一個服務消費方。 原文鏈接:Dubbo Spring Cloud 重塑微服務治理,來自于微信公眾號:次靈均閣 摘要 在 Java 微服務生態(tài)中,Spring Cloud1 成為...

    wh469012917 評論0 收藏0
  • 課網(wǎng)_Spring Boot 發(fā)送郵件》學習總結(jié)

    摘要:慕課網(wǎng)發(fā)送郵件學習總結(jié)時間年月日星期六說明本文部分內(nèi)容均來自慕課網(wǎng)。 慕課網(wǎng)《Spring Boot 發(fā)送郵件》學習總結(jié) 時間:2018年09月08日星期六 說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):https://www.imooc.com 教學源碼:https://github.com/ityouknow/... 學習源碼:https://github.com/zccoder...

    Meathill 評論0 收藏0
  • 課網(wǎng)_《Java模板引擎之Freemarker》學習總結(jié)

    摘要:時間年月日星期日說明本文部分內(nèi)容均來自慕課網(wǎng)。整體目錄結(jié)構(gòu)如下項目文件用于數(shù)據(jù)持久化配置項目配置配置視圖解析器配置靜態(tài)資源映射配置配置配置自定義指令配置解析器配置,類似于項目啟動類新建,注冊配置類,并將其和當前關(guān)聯(lián)。 時間:2017年3月19日星期日說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學示例源碼:無個人學習源碼:https://githu...

    xumenger 評論0 收藏0
  • 課網(wǎng)_Spring Boot熱部署》學習總結(jié)

    時間:2017年12月01日星期五說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com 教學源碼:無 學習源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 課程介紹 熱部署的使用場景 本地調(diào)式 線上發(fā)布 熱部署的使用優(yōu)點 無論本地還是線上,都適用 無需重啟服務器:提高開發(fā)、調(diào)式效率、提升發(fā)布、運維效率、降低運維成本 前置...

    Channe 評論0 收藏0

發(fā)表評論

0條評論

hqman

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<