《Spring Boot開發:從0到1》 大綱結構v2.0
第一部分Spring Boot基礎
第1章 Spring Boot史前簡述
1.1 J2EE(Java 2 Platform Enterprise Edition)簡介
1.2 Java企業級開發框架概述
1.3 Spring生態系統
1.4 Spring JavaConfig
第2章 Spring Boot簡介
2.1 用Spring Boot創造一切
2.2 Spring Boot起源
2.3 Spring Boot在Spring生態中的構成
2.3.1 Spring生態頂級項目
2.3.2 Spring cloud子項目
2.4 Spring Boot核心組件
2.5 Spring Boot版本歷史
2.6 Spring Boot學習成本
第3章 Spring Boot快速開始Hello World
3.1 Spring Boot CLI groovy版Hello World
3.2 常規Java版Hello World
第4章 零XML配置的Spring Boot Application
4.1 application.properties
4.2 Spring Boot屬性配置和使用
4.2.1配置的優先級
4.2.2命令行參數配置
4.2.3 random.*屬性配置
4.2.4屬性文件配置
4.2.5 YAML格式的配置文件
4.2.6使用 Java配置類
4.3使用CommandLineRunner執行初始化加載
第5章 Spring Boot自動配置原理
5.1 Spring Boot的核心組件模塊
5.2 Spring Boot Starters
5.3 @EnableAutoConfiguration自動配置原理
5.4 FreeMarkerAutoConfiguration自動配置的實例分析
5.5 spring.factories與定義應用程序的初始化行為
第二部分 Spring Boot集成
第6章 Spring Boot數據庫集成
6.1 Spring Boot集成mybatis
6.2 Spring Boot集成jpa
6.3 Spring Boot集成多數據源
6.4 Spring Boot集成Druid監控數據庫
6.5 Spring Boot集成mongodb開發
第7章 Spring Boot集成模板引擎
7.1 Spring Boot集成jsp模板
7.2 Spring Boot集成thymeleaf模板
7.3 Spring Boot集成velocity模板
7.4 Spring Boot集成freemarker模板
7.5 Spring Boot集成groovy模板
第8章 Spring Boot集成開發
8.1 Spring Boot集成Groovy混合Java開發
8.2 Spring Boot集成Groovy、Grails開發
8.3 Spring Boot集成Scala混合Java開發
8.4 Spring Boot集成Kotlin混合Java開發
8.5 Spring Boot集成Swagger2構建自動化Rest API文檔
8.6 Spring Boot集成Spring Security
8.7 Spring Boot集成日志
8.8 Spring Boot靜態資源處理
第9章 Spring Boot開發者工具
9.1 Spring Boot maven plugin
9.2 Spring Boot gradle plugin
9.3 Spring Boot熱部署
9.4 Spring Boot遠程調試
第10章 Spring Boot應用部署運維
10.1 Spring Boot應用運行
10.2使用Spring Cloud部署
10.3使用Docker快速部署
第11章 Spring Boot應用監控
11.1 使用Spring Boot Actuator監控應用
11.2 Spring Boot遠程Shell
第12章 Spring Boot與微服務
12.1 微服務架構
12.2 使用Spring Boot創建微服務
第三部分 問題解決
第13章 常見問題與解決方案
13.1 Spring MVC 關于controller的字符編碼
13.2 Spring Boot啟動報錯
13.3 javax.servlet.ServletException
13.4 庫依賴沖突問題
13.5 org.apache.catalina.LifecycleException
13.6 @EnableMongoRepositories路徑配置
13.7 Logging system failed to initialize using configuration from 'logback.xml '
13.8 java.lang.IllegalArgumentException: Request header is too large
13.9 No handler found for GET /swagger-ui.html
附錄
附錄A 計算機的0和1
附錄B 編程的本質
附錄C Java編程簡史
《Springboot極簡教程》大鋼結構v1.0.1
《Springboot極簡教程》
第O部分 Spring Boot簡介
第1章 Spring Boot史前簡述
1.1 J2EE(Java 2 Platform Enterprise Edition)簡介
1.2 Java企業級開發框架概述
1.3 Spring生態系統
1.4 Spring JavaConfig
小結
參考資料
第2章 Spring Boot簡史
2.1 用SpringBoot創造一切吧
2.2 SpringBoot起源
2.3 SpringBoot在整個Spring生態中
2.3.1 Spring生態頂級項目
2.3.2 Spring cloud子項目
2.4 SpringBoot核心組件
2.5 SpringBoot版本歷史
2.6 SpringBoot學習成本
小結
第一部分 SpringBoot的核心
第3章 一鍵啟動應用程序
3.1 SpringBoot版的Restful Hello,World
3.1.1 Spring Boot CLI groovy版Hello World
3.1.2 常規的Java版的Hello World
3.2 啟動Springboot的自動配置@EnableAutoConfiguration
第4章 零XML配置的Springboot Application
4.1 application.properties
4.2 配置文件說明
第5章 Springboot功能模塊和核心組件
第二部分 SpringBoot集成
第6章 Springboot數據庫集成
6.1 Spring Boot集成mybatis
6.2 Spring Boot集成jpa
第7章 Spring Boot集成模板引擎
7.1 Spring Boot集成jsp模板
7.2 Spring Boot集成thymeleaf模板
7.3 Spring Boot集成velocity模板
7.4 Spring Boot集成freemarker模板
7.5 Spring Boot集成groovy模板
第8章 Spring Boot集成Groovy混合Java開發
第9章 Spring Boot集成Groovy,Grails開發
第10章 Spring Boot集成Scala混合Java開發
第11章 Spring Boot集成Kotlin混合Java開發
第12章 Springboot集成mongodb開發
第13章 Spring Boot集成Swagger快速構建REST API文檔
第14章 Spring Boot安全集成Spring Security
第15章 Spring Boot日志集成
第16章 Spring Boot微服務和DevOps
第三部分 問題解決
常見問題&解決
Spring MVC 關于controller的字符編碼
Springboot啟動報錯 Whitelabel Error Page: This application has no explicit mapping for
javax.servlet.ServletException: Circular view path [login]: would dispatch back to the current handler URL [/login] again
庫依賴沖突問題:Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackOverflow
org.apache.catalina.LifecycleException: A child container failed during start
@EnableMongoRepositories路徑配置:APPLICATION FAILED TO START: Parameter 0 of constructor in
Logging system failed to initialize using configuration from 'logback.xml '
第四部分 附錄
附錄1 計算機簡史
1.0 一切皆是映射
1.1 二進制01與易經陰陽
1.2 向上抽象封裝一層
1.3 編程之初:從機械計算機到能接受指令的計算機
1.3.1 機械計算機簡史
1.3.2 能接受指令的計算機
小結
附錄2 編程的本質
2.0 什么是編程
2.1 結構化程序設計
2.2 怎樣解決問題
2.3 層次化分解與復合
2.4 面向對象編程(OOP)
2.5 函數式編程(FP)
2.6 混合式編程(HP)
小結
附錄3 編程簡史
1940之前
1940年代
1950與1960年代
1967-1978:確立基礎范式
1980年代:增強、模塊、性能
1990年代:互聯網時代
當今的趨勢
編程語言發展史上的杰出人物
名詞紀要
參考資料
附錄4 Java編程簡史
從GOTO到OOP
Java簡史
JVM上的語言家族
用哪種 JVM 語言?
《Springboot極簡教程》大鋼結構v1.0.0
《Springboot極簡教程》
第O部分 Spring Boot簡介
第1章 Spring Boot史前簡述
1.1 循證架構
1.2 Java元編程
1.2.1 元編程(meta-programming)
1.3 Java主流框架概述
1.3.1 Struts
1.3.2 Hibernate
1.3.3 Spring框架
1.4 Spring生態系統
1.5 Spring JavaConfig
1.5.1 JavaConfig簡介
1.5.2 JavaConfig與注解驅動配置
小結
第2章 Spring Boot簡史
2.1 用SpringBoot創造一切吧
2.2 SpringBoot起源
2.3 SpringBoot在整個Spring生態中
2.3.1 Spring生態頂級項目
2.3.2 Spring cloud子項目
2.4 SpringBoot核心組件
2.5 SpringBoot版本歷史
2.6 SpringBoot學習成本
小結
第一部分 SpringBoot的核心
第3章 一鍵啟動應用程序
3.1 SpringBoot版的Restful Hello,World
3.1.1 Spring Boot CLI groovy版Hello World
3.1.2 常規的Java版的Hello World
3.2 啟動Springboot的自動配置@EnableAutoConfiguration
第4章 零XML配置的Springboot Application
4.1 application.properties
4.2 配置文件說明
第5章 Springboot功能模塊和核心組件
第二部分 SpringBoot集成
第6章 Springboot數據庫集成
6.1 Spring Boot集成mybatis
6.2 Spring Boot集成jpa
第7章 Spring Boot集成模板引擎
7.1 Spring Boot集成jsp模板
7.2 Spring Boot集成thymeleaf模板
7.3 Spring Boot集成velocity模板
7.4 Spring Boot集成freemarker模板
7.5 Spring Boot集成groovy模板
第8章 Spring Boot集成Groovy,Grails開發
第9章 Spring Boot集成Scala混合Java開發
第10章 Spring Boot集成Kotlin混合Java開發
第11章 Springboot集成mongodb開發
第12章 Spring Boot集成Swagger快速構建REST API文檔
第13章 Spring Boot微服務和DevOps
第三部分 問題解決
常見問題&解決
第四部分 附錄
附錄1 計算機簡史
1.0 一切皆是映射
1.1 二進制01與易經陰陽
1.2 向上抽象封裝一層
1.3 編程之初:從機械計算機到能接受指令的計算機
1.3.1 機械計算機簡史
1.3.2 能接受指令的計算機
小結
附錄2 編程的本質
2.0 什么是編程
2.1 結構化程序設計
2.2 怎樣解決問題
2.3 層次化分解與復合
2.4 面向對象編程(OOP)
2.5 函數式編程(FP)
2.6 混合式編程(HP)
小結
附錄3 編程簡史
附錄4 Java編程簡史
《Spring Boot極簡教程》大綱結構v0.0.3
《Springboot極簡教程》
第O部分 編程總論
第1章 編程總論
第2章 Java編程簡史
第一部分 SpringBoot的核心
第3章 Spring Boot史前簡述
3.1 循證架構
3.2 Java元編程
3.2.1 元編程(meta-programming)
3.3 Java主流框架概述
3.3.1 Struts
3.3.2 Hibernate
3.3.3 Spring框架
3.4 Spring生態系統
3.5 Spring JavaConfig
3.5.1 JavaConfig簡介
3.5.2 JavaConfig與注解驅動配置
小結
第4章 Spring Boot簡史
4.1 用SpringBoot創造一切吧
4.2 SpringBoot起源
4.3 SpringBoot在整個Spring生態中
4.3.1 Spring生態頂級項目
4.3.2 Spring cloud子項目
4.4 SpringBoot核心組件
4.5 SpringBoot版本歷史
4.6 SpringBoot學習成本
小結
第5章 一鍵啟動應用程序
5.0 SpringBoot版的Restful Hello,World
5.0.1 Spring Boot CLI groovy版Hello World
5.0.2 常規的Java版的Hello World
5.1 啟動Springboot的自動配置@EnableAutoConfiguration
第6章 零XML配置的Springboot Application
6.0 application.properties
6.1 配置文件說明
第7章 Springboot功能模塊和核心組件
第8章 Springboot數據庫集成mybatis,jpa
8.0 Spring Boot集成mybatis
8.1 Spring Boot集成jpa
第9章 Spring Boot集成模板引擎jsp, thymeleaf, velocity, freemarker, groovy
9.0 Spring Boot集成jsp模板
9.1 Spring Boot集成thymeleaf模板
9.2 Spring Boot集成velocity模板
9.2.1 配置pom依賴的velocity-starter
9.2.2 application.properties配置
9.2.3 Dao層代碼示例
9.2.4 Controller層代碼示例
9.2.5 執行定時任務
9.2.6 啟動類代碼&運行測試
9.3 Spring Boot集成freemarker模板
9.4 Spring Boot集成groovy模板
第二部分 SpringBoot集成
第10章 Spring Boot集成Groovy混合Java開發
第11章 Spring Boot集成Scala混合Java開發
第12章 Spring Boot集成Kotlin混合Java開發
第13章 Springboot集成mongodb開發
13.0 系統基本功能
13.1 系統技術框架
13.2 系統架構設計
13.3 數據庫環境配置
13.4 定義領域對象
13.5 核心業務邏輯實現
13.6 前端jsp設計
13.7 前端js代碼
13.8 運行效果
小結
第14章 Spring Boot集成Swagger快速構建REST API文檔
第15章 Spring Boot微服務和DevOps
第三部分 問題解決
常見問題&解決
第四部分 附錄
附錄1 計算機簡史
1.0 一切皆是映射
1.1 二進制01與易經陰陽
1.2 向上抽象封裝一層
1.3 編程之初:從機械計算機到能接受指令的計算機
1.3.1 機械計算機簡史
1.3.2 能接受指令的計算機
小結
附錄2 編程的本質
2.0 什么是編程
2.1 結構化程序設計
2.2 怎樣解決問題
2.3 層次化分解與復合
2.4 面向對象編程(OOP)
2.5 函數式編程(FP)
2.6 混合式編程(HP)
小結
《Spring Boot極簡教程》大綱結構v0.0.2
《Springboot極簡教程》
第O部分 編程總論
第1章 計算機簡史
1.0 一切皆是映射
1.1 二進制01與易經陰陽
1.2 向上抽象封裝一層
1.3 編程之初:從機械計算機到能接受指令的計算機
1.3.1 機械計算機簡史
1.3.2 能接受指令的計算機
小結
第2章 編程的本質
2.0 什么是編程
2.1 結構化程序設計
2.2 怎樣解決問題
2.3 層次化分解與復合
2.4 面向對象編程(OOP)
2.5 函數式編程(FP)
2.6 混合式編程(HP)
小結
第一部分 SpringBoot的核心
第3章 Spring Boot史前簡述
3.1 循證架構
3.2 Java元編程
3.2.1 元編程(meta-programming)
3.3 Java主流框架概述
3.3.1 Struts
3.3.2 Hibernate
3.3.3 Spring框架
3.4 Spring生態系統
3.5 Spring JavaConfig
3.5.1 JavaConfig簡介
3.5.2 JavaConfig與注解驅動配置
小結
第4章 Spring Boot簡史
4.1 用SpringBoot創造一切吧
4.2 SpringBoot起源
4.3 SpringBoot在整個Spring生態中
4.3.1 Spring生態頂級項目
4.3.2 Spring cloud子項目
4.4 SpringBoot核心組件
4.5 SpringBoot版本歷史
4.6 SpringBoot學習成本
小結
第5章 一鍵啟動應用程序
5.0 SpringBoot版的Restful Hello,World
5.0.1 Spring Boot CLI groovy版Hello World
5.0.2 常規的Java版的Hello World
5.1 啟動Springboot的自動配置@EnableAutoConfiguration
第6章 零XML配置的Springboot Application
6.0 application.properties
6.1 配置文件說明
第7章 Springboot功能模塊和核心組件
第8章 Springboot數據庫集成mybatis,jpa
8.0 Spring Boot集成mybatis
8.1 Spring Boot集成jpa
第9章 Spring Boot集成模板引擎jsp, thymeleaf, velocity, freemarker, groovy
9.0 Spring Boot集成jsp模板
9.1 Spring Boot集成thymeleaf模板
9.2 Spring Boot集成velocity模板
9.2.1 配置pom依賴的velocity-starter
9.2.2 application.properties配置
9.2.3 Dao層代碼示例
9.2.4 Controller層代碼示例
9.2.5 執行定時任務
9.2.6 啟動類代碼&運行測試
9.3 Spring Boot集成freemarker模板
9.4 Spring Boot集成groovy模板
第二部分 SpringBoot集成
第10章 Spring Boot集成Groovy混合Java開發
第11章 Spring Boot集成Scala混合Java開發
第12章 Spring Boot集成Kotlin混合Java開發
第13章 Springboot集成mongodb開發
13.0 系統基本功能
13.1 系統技術框架
13.2 系統架構設計
13.3 數據庫環境配置
13.4 定義領域對象
13.5 核心業務邏輯實現
13.6 前端jsp設計
13.7 前端js代碼
13.8 運行效果
小結
第14章 Spring Boot集成Swagger快速構建REST API文檔
第15章 Spring Boot微服務和DevOps
第三部分 問題解決
常見問題&解決
《Spring Boot極簡教程》大綱結構v0.0.1
極簡SpringBoot教程
SpringBoot起源
項目背景
源代碼&文檔
https://github.com/spring-projects/spring-boot
http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/
解決了一個怎樣的問題
如何把這些子項目整合起來形成一個完整的解決方案。在如何使用這些組件上,并沒有相關的最佳實踐提供指導
springboot底層完全是spring,只是springboot幫你做掉了很多模板配置
Spring Boot 是 Spring 框架的一個新的子項目,用于創建 Spring 4.0 項目。它的開發始于 2013 年。2014 年 4 月發布 1.0.0 版本。它可以自動配置 Spring 的各種組件,并不依賴代碼生成和 XML 配置文件。
Spring Boot 的作用在于創建和啟動新的基于 Spring 框架的項目
spring生態
特性
創建可以獨立運行的 Spring 應用。
直接嵌入 Tomcat 或 Jetty 服務器,不需要部署 WAR 文件。
提供推薦的基礎 POM 文件來簡化 Apache Maven 配置。
盡可能的根據項目依賴來自動配置 Spring 框架。
提供可以直接在生產環境中使用的功能,如性能指標、應用信息和應用健康檢查。
沒有代碼生成,也沒有 XML 配置文件。
核心理念
約定優于配置(convention over configuration)
SpringBoot架構
核心模塊解決的核心問題
SpringBoot:快速開始 A Restful Hello,World
Spring boot注解
@configuration 相當于xml配置文件
@RestController Spring新加入的聲明Controller的注解
@component@service @Repository 聲明bean
@autowired @Qualifier 注入bean
@SpringBootApplication = @Configuration @EnableAutoConfiguration @ComponentScan
@Import @ImportResource 導入配置文件
@Configuration 聲明配置類
@RestController 實現一個RESTful web services
@Component , @Service , @Repository , @Controller 聲明bean
@autowired @Qualifier 注入
@Aspect等等支持AOP
@RequestMapping 注解地址映射,url pattern
實例
https://github.com/MiniSpringBootTutorial/spring-boot/tree/master/spring-boot-samples
SpringBoot Application啟動過程run流程圖
SpringBoot集裝箱starter
spring-boot-starter
spring-boot-starter-actuator
spring-boot-starter-jdbc
spring-boot-starter-data-jpa
spring-boot-starter-data-*
spring-boot-starter-security
spring-boot-starter-test
spring-boot-starter-web
寫一個自己定制的starter
properties/YAML配置PropertyConfig
Spring Boot 所提供的配置優先級順序比較復雜。按照優先級從高到低的順序:
配置優先級
命令行參數。(最高)
通過 System.getProperties() 獲取的 Java 系統參數。
操作系統環境變量。
從 java:comp/env 得到的 JNDI 屬性。
通過 RandomValuePropertySource 生成的“random.*”屬性。
應用 Jar 文件之外的屬性文件。
應用 Jar 文件內部的屬性文件。
在應用配置 Java 類(包含“@Configuration”注解的 Java 類)中通過“@PropertySource”注解聲明的屬性文件。
通過“SpringApplication.setDefaultProperties”聲明的默認屬性。
屬性文件
Spring Boot 提供的 SpringApplication 類會搜索并加載 application.properties 文件來獲取配置屬性值。SpringApplication 類會在下面位置搜索該文件。
當前目錄的“/config”子目錄。
當前目錄。
classpath 中的“/config”包。
classpath
YAML
spring:
profiles: development
db:
url: jdbc:hsqldb:file:testdb
username: sa
password:
spring:
profiles: test
db:
url: jdbc:mysql://localhost/test
username: test
password: test
模板引擎
jsp
velocity
freemarker
thymeleaf
內嵌web容器EmbeddedServletContainerCustomizer
tomcat
jetty
集成SpringMVC開發
spring-boot 加入攔截器Interceptor
WebMvcConfigurerAdapter: 一行代碼寫Controller
WebSecurityConfigurerAdapter
@ControllerAdvice系統全局統一異常處理
數據庫持久層
jpa
mybatis
mysql
mongodb
RESTful:Spring Boot with Mongodb
H2
應用監控endpoint
技術棧
算法,數據結構,編譯,架構,框架,分布式,項目管理,高性能,DB,系統(OS/網絡/存儲),JAVASCRIPT/CSS/html
Design Patterns
編程名言
以下內容收集自一些優秀的技術書籍章節開頭的名言佳句,非常有意思,直接或間接反映了軟件開發中的一些事情。
生命太短暫,不要去做一些根本沒有人想要的東西。——Ash Maurya,Running Lean 作者
如果你交給某人一個程序,你將折磨他一整天;如果你教某人如何編寫程序,你將折磨他一輩子。——David Leinweber
軟件設計有兩種方式:一種方式是,使軟件過于簡單,明顯沒有缺陷;另一種方式是,使軟件過于復雜,沒有明顯的缺陷。——C.A.R. Hoare
其實,我嘗試著使Ruby更自然,而不是簡單。Ruby看起來很簡單,但內部是非常復雜的,就像我們的身體一樣。——松本行弘,Ruby之父
大部分情況下,構建程序的過程本質上是對規范調試的過程。——Fred Brooks,《人月神話》作者
軟件開發往往是這樣:最開始的90%代碼占用了開始的90%的開發時間;剩下10%代碼同樣需要90%的開發時間。——Tom Cargill
當你試圖解決一個你不理解的問題時,復雜化就產成了。——Andy Boothe
用幾個小時來制定計劃,可以節省幾周的編程時間。—— 匿名
控制復雜性是計算機編程的本質。—— Brian Kernighan
計算機科學領域的所有問題都可以通過其他方式間接解決。——David Wheeler
編程是兩隊人馬在競爭:軟件工程師努力設計出最大最好的連白癡都會使用的程序;而宇宙在拼命制造最大最好的白癡。到目前為止,宇宙是勝利者。—— Rick Cook
調試一個初次見到的代碼比重寫代碼要困難兩倍。因此,按照定義,如果你寫代碼非常巧妙,那么沒有人足夠聰明來調試它。—— Brian W. Kernighan
我不是一個偉大的程序員,我只是一個具有良好習慣的優秀程序員。― Kent Beck
你們中大多數人都熟悉程序員的美德,有三種:那就是懶惰、急躁和傲慢。– Larry Wall,Perl語言發明人
任何一個傻瓜都會寫能夠讓機器理解的代碼,只有好的程序員才能寫出人類可以理解的代碼。——Martin Fowler
靠代碼行數來衡量開發進度,就像是憑重量來衡量飛機制造的進度。——比爾?蓋茨
這不是一個bug,這只是一個未列出來的特性。——匿名
作為一個程序員,郁悶的事情是,面對一個代碼塊,卻不敢去修改。更糟糕的是,這個代碼塊還是自己寫的。—— Peyton Jones
它在我的機器上可以很好運行!——大部分程序員
能說算不上什么,有本事就把你的代碼給我看看。——Linus Torvalds,Linux之父
我認為對象就像是生物學里的細胞,或者網絡中的一臺計算機,只能夠通過消息來通信——Alan Kay,Smalltalk的發明人,面向對象之父
當你選擇了一種語言,意味著你還選擇了一組技術、一個社區。——Joshua Bloch
質量、速度、廉價,選擇其中兩個。——匿名
過早的優化是罪惡之源。——Donald Knuth
沒有什么代碼的執行速度比空代碼更快。——Merb核心原則
如果你是房間里最聰明的人,那么你走錯房間了。——匿名
如果只需更改一個單一的代碼行,你的部門需要花費多長時間?——Mary Poppendieck
九個人不能讓一個孩子在一個月內出生。——Fred Brooks,《人月神話》作者
好代碼本身就是最好的文檔。當你需要添加一個注釋時,你應該考慮如何修改代碼才能不需要注釋。——Steve McConnell,Code Complete 作者
一個人在教會電腦之前,別說他真正理解這個東西了。——Donald Knuth
UNIX理念
工程構建
maven
gradle
基于Goovy的Gradle
Gradle的安裝非常方便,下載ZIP包,解壓到本地目錄,設置 GRADLE_HOME 環境變量并將 GRADLE_HOME/bin 加到 PATH 環境變量中,安裝就完成了。
類似于Maven的pom.xml文件,每個Gradle項目都需要有一個對應的build.gradle文件,該文件定義一些任務(task)來完成構建工作
代碼版本控制
git
svn
Kotlin
kotlin是由IntelliJ IDEA的開發商Jetbrain推出的一種基于JVM的開發語言,目標是簡化Java中很多繁瑣的設計,可以和Java無縫的集成
Springboot使用Kotlin和Java混合編程
微服務
以前一個大型應用程序搞定所有需求
現在更傾向于把大型應用程序切分成多個微服務,服務之間通過 RPC 調用
微服務架構的好處
服務之間相互隔離,減少宕機,不可用的概率
讓專門的api去負責專門的事情
small is beautiful
APIs as a product
DevOps(Development&Operations)
軟件生命周期融合
PD
Dev
QA
Ops
Rest API
使用Spring Boot&Swagger快速構建REST API并生成優美的API文檔