時間:2018年04月08日星期日
說明:本文部分內容均來自慕課網。@慕課網:https://www.imooc.com
教學源碼:無
學習源碼:https://github.com/zccodere/s...
課程內容
Spring Boot介紹
環境準備
第一個Spring Boot項目
多模塊項目
打包和運行
1-2 框架定位 1-3 特性介紹2.0 新特性
編程語言:Java 8及以上
底層框架:Spring Framework 5.0.0及以上
全新特性:Web Flux
為什么選擇Web Flux
函數編程:Java8 Lambda
響應編程:Reactive Streams
異步編程:Servlet 3.1或Asyn NIO
第二章:簡單項目 2-1 環境準備開發環境
安裝JDK(https://java.oracle.com)
安裝Maven(https://maven.apache.org)
安裝IDEA(https://www.jetbrains.com/idea)
2-2 構建項目簡單應用
編寫REST程序
運行Spring Boot應用
使用Http請求工具Postman
場景說明
定義用戶模型,包括屬性:用戶ID和名稱
客戶端發送POST請求,創建用戶(Web MVC)
客戶端發送GET請求,獲取所有用戶(Web Flux)
代碼編寫
1.創建名為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.完成后的項目結構如下
3.編寫BootSimpleApplication類
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; /** *
* 標題: 用戶資源庫
* 描述: 領域驅動模型開發
* * @author zc * @date 2018/04/08 * {@link User} {@link Repository} */ @Repository public class UserRepository { /** * 采用內存型存儲方式 */ 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 模塊拆分
* 標題: 路由器函數配置
* 描述: 配置映射
* * @author zc * @date 2018/04/08 */ @Configuration public class RouterFunctionConfiguration { /** * Servlet 規范 * 請求接口:ServletRequest 或者 HttpServletRequest * 響應接口:ServletResponse 或者 HttpServletResponse * * Spring 5.0 重新定義了服務請求的響應接口 * 請求接口:ServerRequest * 響應接口:ServerResponse * 即可支持 Servlet 規范,也可以支持自定義,比如 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); }); } }
多模塊重構
調整父模塊工程類型(packageing)
創建子模塊工程(module)
子模塊依賴管理(dependencyManagement)
完成后的結構如下
第四章:課程總結 4-1 課程總結主要內容
Spring Boot 介紹
Spring Boot 項目
Spring Boot 模塊
Spring Boot 打包
Spring Boot 運行
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68992.html
摘要:原文鏈接編程方法論響應式與代碼設計實戰序,來自于微信公眾號次靈均閣正文內容在一月的架構和設計趨勢報告中,響應式編程和函數式仍舊編列在第一季度的早期采納者中。 原文鏈接:《Java編程方法論:響應式RxJava與代碼設計實戰》序,來自于微信公眾號:次靈均閣 正文內容 在《2019 一月的InfoQ 架構和設計趨勢報告》1中,響應式編程(Reactive Programming)和函數式...
摘要:在服務治理方面,相較于而言,并不成熟。遺憾的是,往往被部分開發者片面地視作服務治理的框架,而非微服務基礎設施。因此,建議開發人員將或者遷移為服務。因此,下一步需要將其配置服務遠程。當服務提供方啟動后,下一步實現一個服務消費方。 原文鏈接:Dubbo Spring Cloud 重塑微服務治理,來自于微信公眾號:次靈均閣 摘要 在 Java 微服務生態中,Spring Cloud1 成為...
摘要:慕課網發送郵件學習總結時間年月日星期六說明本文部分內容均來自慕課網。 慕課網《Spring Boot 發送郵件》學習總結 時間:2018年09月08日星期六 說明:本文部分內容均來自慕課網。@慕課網:https://www.imooc.com 教學源碼:https://github.com/ityouknow/... 學習源碼:https://github.com/zccoder...
摘要:時間年月日星期日說明本文部分內容均來自慕課網。整體目錄結構如下項目文件用于數據持久化配置項目配置配置視圖解析器配置靜態資源映射配置配置配置自定義指令配置解析器配置,類似于項目啟動類新建,注冊配置類,并將其和當前關聯。 時間:2017年3月19日星期日說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學示例源碼:無個人學習源碼:https://githu...
時間:2017年12月01日星期五說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com 教學源碼:無 學習源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 課程介紹 熱部署的使用場景 本地調式 線上發布 熱部署的使用優點 無論本地還是線上,都適用 無需重啟服務器:提高開發、調式效率、提升發布、運維效率、降低運維成本 前置...
閱讀 617·2023-04-25 18:37
閱讀 2779·2021-10-12 10:12
閱讀 8312·2021-09-22 15:07
閱讀 563·2019-08-30 15:55
閱讀 3173·2019-08-30 15:44
閱讀 2194·2019-08-30 15:44
閱讀 1624·2019-08-30 13:03
閱讀 1560·2019-08-30 12:55