時間:2018年04月08日星期日
說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):https://www.imooc.com
教學源碼:無
學習源碼:https://github.com/zccodere/s...
課程內(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 ConcurrentMaprepository = 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 CollectionfindAll(){ 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; /** *第三章:簡單使用 3-1 模塊拆分
* 標題: 路由器函數(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 RouterFunctionpersonFindAll(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); }); } }
多模塊重構(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
摘要:原文鏈接編程方法論響應式與代碼設計實戰(zhàn)序,來自于微信公眾號次靈均閣正文內(nèi)容在一月的架構(gòu)和設計趨勢報告中,響應式編程和函數(shù)式仍舊編列在第一季度的早期采納者中。 原文鏈接:《Java編程方法論:響應式RxJava與代碼設計實戰(zhàn)》序,來自于微信公眾號:次靈均閣 正文內(nèi)容 在《2019 一月的InfoQ 架構(gòu)和設計趨勢報告》1中,響應式編程(Reactive Programming)和函數(shù)式...
摘要:在服務治理方面,相較于而言,并不成熟。遺憾的是,往往被部分開發(fā)者片面地視作服務治理的框架,而非微服務基礎設施。因此,建議開發(fā)人員將或者遷移為服務。因此,下一步需要將其配置服務遠程。當服務提供方啟動后,下一步實現(xiàn)一個服務消費方。 原文鏈接:Dubbo Spring Cloud 重塑微服務治理,來自于微信公眾號:次靈均閣 摘要 在 Java 微服務生態(tài)中,Spring Cloud1 成為...
摘要:慕課網(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...
摘要:時間年月日星期日說明本文部分內(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...
時間: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ā)布、運維效率、降低運維成本 前置...
閱讀 635·2023-04-25 18:37
閱讀 2796·2021-10-12 10:12
閱讀 8374·2021-09-22 15:07
閱讀 577·2019-08-30 15:55
閱讀 3183·2019-08-30 15:44
閱讀 2204·2019-08-30 15:44
閱讀 1635·2019-08-30 13:03
閱讀 1570·2019-08-30 12:55