《Spring Boot開(kāi)發(fā):從0到1》 大綱結(jié)構(gòu)v2.0
第一部分Spring Boot基礎(chǔ)
第1章 Spring Boot史前簡(jiǎn)述
1.1 J2EE(Java 2 Platform Enterprise Edition)簡(jiǎn)介
1.2 Java企業(yè)級(jí)開(kāi)發(fā)框架概述
1.3 Spring生態(tài)系統(tǒng)
1.4 Spring JavaConfig
第2章 Spring Boot簡(jiǎn)介
2.1 用Spring Boot創(chuàng)造一切
2.2 Spring Boot起源
2.3 Spring Boot在Spring生態(tài)中的構(gòu)成
2.3.1 Spring生態(tài)頂級(jí)項(xiàng)目
2.3.2 Spring cloud子項(xiàng)目
2.4 Spring Boot核心組件
2.5 Spring Boot版本歷史
2.6 Spring Boot學(xué)習(xí)成本
第3章 Spring Boot快速開(kāi)始Hello World
3.1 Spring Boot CLI groovy版Hello World
3.2 常規(guī)Java版Hello World
第4章 零XML配置的Spring Boot Application
4.1 application.properties
4.2 Spring Boot屬性配置和使用
4.2.1配置的優(yōu)先級(jí)
4.2.2命令行參數(shù)配置
4.2.3 random.*屬性配置
4.2.4屬性文件配置
4.2.5 YAML格式的配置文件
4.2.6使用 Java配置類(lèi)
4.3使用CommandLineRunner執(zhí)行初始化加載
第5章 Spring Boot自動(dòng)配置原理
5.1 Spring Boot的核心組件模塊
5.2 Spring Boot Starters
5.3 @EnableAutoConfiguration自動(dòng)配置原理
5.4 FreeMarkerAutoConfiguration自動(dòng)配置的實(shí)例分析
5.5 spring.factories與定義應(yīng)用程序的初始化行為
第二部分 Spring Boot集成
第6章 Spring Boot數(shù)據(jù)庫(kù)集成
6.1 Spring Boot集成mybatis
6.2 Spring Boot集成jpa
6.3 Spring Boot集成多數(shù)據(jù)源
6.4 Spring Boot集成Druid監(jiān)控?cái)?shù)據(jù)庫(kù)
6.5 Spring Boot集成mongodb開(kāi)發(fā)
第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集成開(kāi)發(fā)
8.1 Spring Boot集成Groovy混合Java開(kāi)發(fā)
8.2 Spring Boot集成Groovy、Grails開(kāi)發(fā)
8.3 Spring Boot集成Scala混合Java開(kāi)發(fā)
8.4 Spring Boot集成Kotlin混合Java開(kāi)發(fā)
8.5 Spring Boot集成Swagger2構(gòu)建自動(dòng)化Rest API文檔
8.6 Spring Boot集成Spring Security
8.7 Spring Boot集成日志
8.8 Spring Boot靜態(tài)資源處理
第9章 Spring Boot開(kāi)發(fā)者工具
9.1 Spring Boot maven plugin
9.2 Spring Boot gradle plugin
9.3 Spring Boot熱部署
9.4 Spring Boot遠(yuǎn)程調(diào)試
第10章 Spring Boot應(yīng)用部署運(yùn)維
10.1 Spring Boot應(yīng)用運(yùn)行
10.2使用Spring Cloud部署
10.3使用Docker快速部署
第11章 Spring Boot應(yīng)用監(jiān)控
11.1 使用Spring Boot Actuator監(jiān)控應(yīng)用
11.2 Spring Boot遠(yuǎn)程Shell
第12章 Spring Boot與微服務(wù)
12.1 微服務(wù)架構(gòu)
12.2 使用Spring Boot創(chuàng)建微服務(wù)
第三部分 問(wèn)題解決
第13章 常見(jiàn)問(wèn)題與解決方案
13.1 Spring MVC 關(guān)于controller的字符編碼
13.2 Spring Boot啟動(dòng)報(bào)錯(cuò)
13.3 javax.servlet.ServletException
13.4 庫(kù)依賴(lài)沖突問(wèn)題
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 計(jì)算機(jī)的0和1
附錄B 編程的本質(zhì)
附錄C Java編程簡(jiǎn)史
《Springboot極簡(jiǎn)教程》大鋼結(jié)構(gòu)v1.0.1
《Springboot極簡(jiǎn)教程》
第O部分 Spring Boot簡(jiǎn)介
第1章 Spring Boot史前簡(jiǎn)述
1.1 J2EE(Java 2 Platform Enterprise Edition)簡(jiǎn)介
1.2 Java企業(yè)級(jí)開(kāi)發(fā)框架概述
1.3 Spring生態(tài)系統(tǒng)
1.4 Spring JavaConfig
小結(jié)
參考資料
第2章 Spring Boot簡(jiǎn)史
2.1 用SpringBoot創(chuàng)造一切吧
2.2 SpringBoot起源
2.3 SpringBoot在整個(gè)Spring生態(tài)中
2.3.1 Spring生態(tài)頂級(jí)項(xiàng)目
2.3.2 Spring cloud子項(xiàng)目
2.4 SpringBoot核心組件
2.5 SpringBoot版本歷史
2.6 SpringBoot學(xué)習(xí)成本
小結(jié)
第一部分 SpringBoot的核心
第3章 一鍵啟動(dòng)應(yīng)用程序
3.1 SpringBoot版的Restful Hello,World
3.1.1 Spring Boot CLI groovy版Hello World
3.1.2 常規(guī)的Java版的Hello World
3.2 啟動(dòng)Springboot的自動(dòng)配置@EnableAutoConfiguration
第4章 零XML配置的Springboot Application
4.1 application.properties
4.2 配置文件說(shuō)明
第5章 Springboot功能模塊和核心組件
第二部分 SpringBoot集成
第6章 Springboot數(shù)據(jù)庫(kù)集成
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開(kāi)發(fā)
第9章 Spring Boot集成Groovy烁设,Grails開(kāi)發(fā)
第10章 Spring Boot集成Scala混合Java開(kāi)發(fā)
第11章 Spring Boot集成Kotlin混合Java開(kāi)發(fā)
第12章 Springboot集成mongodb開(kāi)發(fā)
第13章 Spring Boot集成Swagger快速構(gòu)建REST API文檔
第14章 Spring Boot安全集成Spring Security
第15章 Spring Boot日志集成
第16章 Spring Boot微服務(wù)和DevOps
第三部分 問(wèn)題解決
常見(jiàn)問(wèn)題&解決
Spring MVC 關(guān)于controller的字符編碼
Springboot啟動(dòng)報(bào)錯(cuò) 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
庫(kù)依賴(lài)沖突問(wèn)題: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 計(jì)算機(jī)簡(jiǎn)史
1.0 一切皆是映射
1.1 二進(jìn)制01與易經(jīng)陰陽(yáng)
1.2 向上抽象封裝一層
1.3 編程之初:從機(jī)械計(jì)算機(jī)到能接受指令的計(jì)算機(jī)
1.3.1 機(jī)械計(jì)算機(jī)簡(jiǎn)史
1.3.2 能接受指令的計(jì)算機(jī)
小結(jié)
附錄2 編程的本質(zhì)
2.0 什么是編程
2.1 結(jié)構(gòu)化程序設(shè)計(jì)
2.2 怎樣解決問(wèn)題
2.3 層次化分解與復(fù)合
2.4 面向?qū)ο缶幊蹋∣OP)
2.5 函數(shù)式編程(FP)
2.6 混合式編程(HP)
小結(jié)
附錄3 編程簡(jiǎn)史
1940之前
1940年代
1950與1960年代
1967-1978:確立基礎(chǔ)范式
1980年代:增強(qiáng)、模塊汪茧、性能
1990年代:互聯(lián)網(wǎng)時(shí)代
當(dāng)今的趨勢(shì)
編程語(yǔ)言發(fā)展史上的杰出人物
名詞紀(jì)要
參考資料
附錄4 Java編程簡(jiǎn)史
從GOTO到OOP
Java簡(jiǎn)史
JVM上的語(yǔ)言家族
用哪種 JVM 語(yǔ)言?
《Springboot極簡(jiǎn)教程》大鋼結(jié)構(gòu)v1.0.0
《Springboot極簡(jiǎn)教程》
第O部分 Spring Boot簡(jiǎn)介
第1章 Spring Boot史前簡(jiǎn)述
1.1 循證架構(gòu)
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生態(tài)系統(tǒng)
1.5 Spring JavaConfig
1.5.1 JavaConfig簡(jiǎn)介
1.5.2 JavaConfig與注解驅(qū)動(dòng)配置
小結(jié)
第2章 Spring Boot簡(jiǎn)史
2.1 用SpringBoot創(chuàng)造一切吧
2.2 SpringBoot起源
2.3 SpringBoot在整個(gè)Spring生態(tài)中
2.3.1 Spring生態(tài)頂級(jí)項(xiàng)目
2.3.2 Spring cloud子項(xiàng)目
2.4 SpringBoot核心組件
2.5 SpringBoot版本歷史
2.6 SpringBoot學(xué)習(xí)成本
小結(jié)
第一部分 SpringBoot的核心
第3章 一鍵啟動(dòng)應(yīng)用程序
3.1 SpringBoot版的Restful Hello,World
3.1.1 Spring Boot CLI groovy版Hello World
3.1.2 常規(guī)的Java版的Hello World
3.2 啟動(dòng)Springboot的自動(dòng)配置@EnableAutoConfiguration
第4章 零XML配置的Springboot Application
4.1 application.properties
4.2 配置文件說(shuō)明
第5章 Springboot功能模塊和核心組件
第二部分 SpringBoot集成
第6章 Springboot數(shù)據(jù)庫(kù)集成
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開(kāi)發(fā)
第9章 Spring Boot集成Scala混合Java開(kāi)發(fā)
第10章 Spring Boot集成Kotlin混合Java開(kāi)發(fā)
第11章 Springboot集成mongodb開(kāi)發(fā)
第12章 Spring Boot集成Swagger快速構(gòu)建REST API文檔
第13章 Spring Boot微服務(wù)和DevOps
第三部分 問(wèn)題解決
常見(jiàn)問(wèn)題&解決
第四部分 附錄
附錄1 計(jì)算機(jī)簡(jiǎn)史
1.0 一切皆是映射
1.1 二進(jìn)制01與易經(jīng)陰陽(yáng)
1.2 向上抽象封裝一層
1.3 編程之初:從機(jī)械計(jì)算機(jī)到能接受指令的計(jì)算機(jī)
1.3.1 機(jī)械計(jì)算機(jī)簡(jiǎn)史
1.3.2 能接受指令的計(jì)算機(jī)
小結(jié)
附錄2 編程的本質(zhì)
2.0 什么是編程
2.1 結(jié)構(gòu)化程序設(shè)計(jì)
2.2 怎樣解決問(wèn)題
2.3 層次化分解與復(fù)合
2.4 面向?qū)ο缶幊蹋∣OP)
2.5 函數(shù)式編程(FP)
2.6 混合式編程(HP)
小結(jié)
附錄3 編程簡(jiǎn)史
附錄4 Java編程簡(jiǎn)史
《Spring Boot極簡(jiǎn)教程》大綱結(jié)構(gòu)v0.0.3
《Springboot極簡(jiǎn)教程》
第O部分 編程總論
第1章 編程總論
第2章 Java編程簡(jiǎn)史
第一部分 SpringBoot的核心
第3章 Spring Boot史前簡(jiǎn)述
3.1 循證架構(gòu)
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生態(tài)系統(tǒng)
3.5 Spring JavaConfig
3.5.1 JavaConfig簡(jiǎn)介
3.5.2 JavaConfig與注解驅(qū)動(dòng)配置
小結(jié)
第4章 Spring Boot簡(jiǎn)史
4.1 用SpringBoot創(chuàng)造一切吧
4.2 SpringBoot起源
4.3 SpringBoot在整個(gè)Spring生態(tài)中
4.3.1 Spring生態(tài)頂級(jí)項(xiàng)目
4.3.2 Spring cloud子項(xiàng)目
4.4 SpringBoot核心組件
4.5 SpringBoot版本歷史
4.6 SpringBoot學(xué)習(xí)成本
小結(jié)
第5章 一鍵啟動(dòng)應(yīng)用程序
5.0 SpringBoot版的Restful Hello,World
5.0.1 Spring Boot CLI groovy版Hello World
5.0.2 常規(guī)的Java版的Hello World
5.1 啟動(dòng)Springboot的自動(dòng)配置@EnableAutoConfiguration
第6章 零XML配置的Springboot Application
6.0 application.properties
6.1 配置文件說(shuō)明
第7章 Springboot功能模塊和核心組件
第8章 Springboot數(shù)據(jù)庫(kù)集成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依賴(lài)的velocity-starter
9.2.2 application.properties配置
9.2.3 Dao層代碼示例
9.2.4 Controller層代碼示例
9.2.5 執(zhí)行定時(shí)任務(wù)
9.2.6 啟動(dòng)類(lèi)代碼&運(yùn)行測(cè)試
9.3 Spring Boot集成freemarker模板
9.4 Spring Boot集成groovy模板
第二部分 SpringBoot集成
第10章 Spring Boot集成Groovy混合Java開(kāi)發(fā)
第11章 Spring Boot集成Scala混合Java開(kāi)發(fā)
第12章 Spring Boot集成Kotlin混合Java開(kāi)發(fā)
第13章 Springboot集成mongodb開(kāi)發(fā)
13.0 系統(tǒng)基本功能
13.1 系統(tǒng)技術(shù)框架
13.2 系統(tǒng)架構(gòu)設(shè)計(jì)
13.3 數(shù)據(jù)庫(kù)環(huán)境配置
13.4 定義領(lǐng)域?qū)ο?/p>
13.5 核心業(yè)務(wù)邏輯實(shí)現(xiàn)
13.6 前端jsp設(shè)計(jì)
13.7 前端js代碼
13.8 運(yùn)行效果
小結(jié)
第14章 Spring Boot集成Swagger快速構(gòu)建REST API文檔
第15章 Spring Boot微服務(wù)和DevOps
第三部分 問(wèn)題解決
常見(jiàn)問(wèn)題&解決
第四部分 附錄
附錄1 計(jì)算機(jī)簡(jiǎn)史
1.0 一切皆是映射
1.1 二進(jìn)制01與易經(jīng)陰陽(yáng)
1.2 向上抽象封裝一層
1.3 編程之初:從機(jī)械計(jì)算機(jī)到能接受指令的計(jì)算機(jī)
1.3.1 機(jī)械計(jì)算機(jī)簡(jiǎn)史
1.3.2 能接受指令的計(jì)算機(jī)
小結(jié)
附錄2 編程的本質(zhì)
2.0 什么是編程
2.1 結(jié)構(gòu)化程序設(shè)計(jì)
2.2 怎樣解決問(wèn)題
2.3 層次化分解與復(fù)合
2.4 面向?qū)ο缶幊蹋∣OP)
2.5 函數(shù)式編程(FP)
2.6 混合式編程(HP)
小結(jié)
《Spring Boot極簡(jiǎn)教程》大綱結(jié)構(gòu)v0.0.2
《Springboot極簡(jiǎn)教程》
第O部分 編程總論
第1章 計(jì)算機(jī)簡(jiǎn)史
1.0 一切皆是映射
1.1 二進(jìn)制01與易經(jīng)陰陽(yáng)
1.2 向上抽象封裝一層
1.3 編程之初:從機(jī)械計(jì)算機(jī)到能接受指令的計(jì)算機(jī)
1.3.1 機(jī)械計(jì)算機(jī)簡(jiǎn)史
1.3.2 能接受指令的計(jì)算機(jī)
小結(jié)
第2章 編程的本質(zhì)
2.0 什么是編程
2.1 結(jié)構(gòu)化程序設(shè)計(jì)
2.2 怎樣解決問(wèn)題
2.3 層次化分解與復(fù)合
2.4 面向?qū)ο缶幊蹋∣OP)
2.5 函數(shù)式編程(FP)
2.6 混合式編程(HP)
小結(jié)
第一部分 SpringBoot的核心
第3章 Spring Boot史前簡(jiǎn)述
3.1 循證架構(gòu)
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生態(tài)系統(tǒng)
3.5 Spring JavaConfig
3.5.1 JavaConfig簡(jiǎn)介
3.5.2 JavaConfig與注解驅(qū)動(dòng)配置
小結(jié)
第4章 Spring Boot簡(jiǎn)史
4.1 用SpringBoot創(chuàng)造一切吧
4.2 SpringBoot起源
4.3 SpringBoot在整個(gè)Spring生態(tài)中
4.3.1 Spring生態(tài)頂級(jí)項(xiàng)目
4.3.2 Spring cloud子項(xiàng)目
4.4 SpringBoot核心組件
4.5 SpringBoot版本歷史
4.6 SpringBoot學(xué)習(xí)成本
小結(jié)
第5章 一鍵啟動(dòng)應(yīng)用程序
5.0 SpringBoot版的Restful Hello,World
5.0.1 Spring Boot CLI groovy版Hello World
5.0.2 常規(guī)的Java版的Hello World
5.1 啟動(dòng)Springboot的自動(dòng)配置@EnableAutoConfiguration
第6章 零XML配置的Springboot Application
6.0 application.properties
6.1 配置文件說(shuō)明
第7章 Springboot功能模塊和核心組件
第8章 Springboot數(shù)據(jù)庫(kù)集成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依賴(lài)的velocity-starter
9.2.2 application.properties配置
9.2.3 Dao層代碼示例
9.2.4 Controller層代碼示例
9.2.5 執(zhí)行定時(shí)任務(wù)
9.2.6 啟動(dòng)類(lèi)代碼&運(yùn)行測(cè)試
9.3 Spring Boot集成freemarker模板
9.4 Spring Boot集成groovy模板
第二部分 SpringBoot集成
第10章 Spring Boot集成Groovy混合Java開(kāi)發(fā)
第11章 Spring Boot集成Scala混合Java開(kāi)發(fā)
第12章 Spring Boot集成Kotlin混合Java開(kāi)發(fā)
第13章 Springboot集成mongodb開(kāi)發(fā)
13.0 系統(tǒng)基本功能
13.1 系統(tǒng)技術(shù)框架
13.2 系統(tǒng)架構(gòu)設(shè)計(jì)
13.3 數(shù)據(jù)庫(kù)環(huán)境配置
13.4 定義領(lǐng)域?qū)ο?/p>
13.5 核心業(yè)務(wù)邏輯實(shí)現(xiàn)
13.6 前端jsp設(shè)計(jì)
13.7 前端js代碼
13.8 運(yùn)行效果
小結(jié)
第14章 Spring Boot集成Swagger快速構(gòu)建REST API文檔
第15章 Spring Boot微服務(wù)和DevOps
第三部分 問(wèn)題解決
常見(jiàn)問(wèn)題&解決
《Spring Boot極簡(jiǎn)教程》大綱結(jié)構(gòu)v0.0.1
極簡(jiǎn)SpringBoot教程
SpringBoot起源
項(xiàng)目背景
源代碼&文檔
https://github.com/spring-projects/spring-boot
http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/
解決了一個(gè)怎樣的問(wèn)題
如何把這些子項(xiàng)目整合起來(lái)形成一個(gè)完整的解決方案弥虐。在如何使用這些組件上慌闭,并沒(méi)有相關(guān)的最佳實(shí)踐提供指導(dǎo)
springboot底層完全是spring,只是springboot幫你做掉了很多模板配置
Spring Boot 是 Spring 框架的一個(gè)新的子項(xiàng)目躯舔,用于創(chuàng)建 Spring 4.0 項(xiàng)目驴剔。它的開(kāi)發(fā)始于 2013 年。2014 年 4 月發(fā)布 1.0.0 版本粥庄。它可以自動(dòng)配置 Spring 的各種組件丧失,并不依賴(lài)代碼生成和 XML 配置文件。
Spring Boot 的作用在于創(chuàng)建和啟動(dòng)新的基于 Spring 框架的項(xiàng)目
spring生態(tài)
特性
創(chuàng)建可以獨(dú)立運(yùn)行的 Spring 應(yīng)用惜互。
直接嵌入 Tomcat 或 Jetty 服務(wù)器布讹,不需要部署 WAR 文件琳拭。
提供推薦的基礎(chǔ) POM 文件來(lái)簡(jiǎn)化 Apache Maven 配置。
盡可能的根據(jù)項(xiàng)目依賴(lài)來(lái)自動(dòng)配置 Spring 框架描验。
提供可以直接在生產(chǎn)環(huán)境中使用的功能白嘁,如性能指標(biāo)、應(yīng)用信息和應(yīng)用健康檢查膘流。
沒(méi)有代碼生成絮缅,也沒(méi)有 XML 配置文件。
核心理念
約定優(yōu)于配置(convention over configuration)
SpringBoot架構(gòu)
核心模塊解決的核心問(wèn)題
SpringBoot:快速開(kāi)始 A Restful Hello,World
Spring boot注解
@configuration 相當(dāng)于xml配置文件
@RestController Spring新加入的聲明Controller的注解
@component@service @Repository 聲明bean
@autowired @Qualifier 注入bean
@SpringBootApplication = @Configuration @EnableAutoConfiguration @ComponentScan
@Import @ImportResource 導(dǎo)入配置文件
@Configuration 聲明配置類(lèi)
@RestController 實(shí)現(xiàn)一個(gè)RESTful web services
@Component , @Service , @Repository , @Controller 聲明bean
@autowired @Qualifier 注入
@Aspect等等支持AOP
@RequestMapping 注解地址映射呼股,url pattern
實(shí)例
https://github.com/MiniSpringBootTutorial/spring-boot/tree/master/spring-boot-samples
SpringBoot Application啟動(dòng)過(guò)程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
寫(xiě)一個(gè)自己定制的starter
properties/YAML配置PropertyConfig
Spring Boot 所提供的配置優(yōu)先級(jí)順序比較復(fù)雜耕魄。按照優(yōu)先級(jí)從高到低的順序:
配置優(yōu)先級(jí)
命令行參數(shù)。(最高)
通過(guò) System.getProperties() 獲取的 Java 系統(tǒng)參數(shù)彭谁。
操作系統(tǒng)環(huán)境變量吸奴。
從 java:comp/env 得到的 JNDI 屬性。
通過(guò) RandomValuePropertySource 生成的“random.*”屬性缠局。
應(yīng)用 Jar 文件之外的屬性文件则奥。
應(yīng)用 Jar 文件內(nèi)部的屬性文件。
在應(yīng)用配置 Java 類(lèi)(包含“@Configuration”注解的 Java 類(lèi))中通過(guò)“@PropertySource”注解聲明的屬性文件狭园。
通過(guò)“SpringApplication.setDefaultProperties”聲明的默認(rèn)屬性读处。
屬性文件
Spring Boot 提供的 SpringApplication 類(lèi)會(huì)搜索并加載 application.properties 文件來(lái)獲取配置屬性值。SpringApplication 類(lèi)會(huì)在下面位置搜索該文件妙啃。
當(dāng)前目錄的“/config”子目錄。
當(dāng)前目錄俊戳。
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
內(nèi)嵌web容器EmbeddedServletContainerCustomizer
tomcat
jetty
集成SpringMVC開(kāi)發(fā)
spring-boot 加入攔截器Interceptor
WebMvcConfigurerAdapter: 一行代碼寫(xiě)Controller
WebSecurityConfigurerAdapter
@ControllerAdvice系統(tǒng)全局統(tǒng)一異常處理
數(shù)據(jù)庫(kù)持久層
jpa
mybatis
mysql
mongodb
RESTful:Spring Boot with Mongodb
H2
應(yīng)用監(jiān)控endpoint
技術(shù)棧
算法,數(shù)據(jù)結(jié)構(gòu)抑胎,編譯燥滑,架構(gòu),框架阿逃,分布式铭拧,項(xiàng)目管理,高性能恃锉,DB搀菩,系統(tǒng)(OS/網(wǎng)絡(luò)/存儲(chǔ)),JAVASCRIPT/CSS/html
Design Patterns
編程名言
以下內(nèi)容收集自一些優(yōu)秀的技術(shù)書(shū)籍章節(jié)開(kāi)頭的名言佳句破托,非常有意思肪跋,直接或間接反映了軟件開(kāi)發(fā)中的一些事情。
生命太短暫土砂,不要去做一些根本沒(méi)有人想要的東西州既∶涨ⅲ——Ash Maurya,Running Lean 作者
如果你交給某人一個(gè)程序吴叶,你將折磨他一整天阐虚;如果你教某人如何編寫(xiě)程序,你將折磨他一輩子蚌卤∈凳——David Leinweber
軟件設(shè)計(jì)有兩種方式:一種方式是,使軟件過(guò)于簡(jiǎn)單造寝,明顯沒(méi)有缺陷珍逸;另一種方式是媳荒,使軟件過(guò)于復(fù)雜,沒(méi)有明顯的缺陷∪逝耄——C.A.R. Hoare
其實(shí),我嘗試著使Ruby更自然哨坪,而不是簡(jiǎn)單界拦。Ruby看起來(lái)很簡(jiǎn)單,但內(nèi)部是非常復(fù)雜的锦聊,就像我們的身體一樣歹嘹。——松本行弘孔庭,Ruby之父
大部分情況下尺上,構(gòu)建程序的過(guò)程本質(zhì)上是對(duì)規(guī)范調(diào)試的過(guò)程≡驳剑——Fred Brooks怎抛,《人月神話(huà)》作者
軟件開(kāi)發(fā)往往是這樣:最開(kāi)始的90%代碼占用了開(kāi)始的90%的開(kāi)發(fā)時(shí)間;剩下10%代碼同樣需要90%的開(kāi)發(fā)時(shí)間芽淡÷砭——Tom Cargill
當(dāng)你試圖解決一個(gè)你不理解的問(wèn)題時(shí),復(fù)雜化就產(chǎn)成了挣菲「坏荆——Andy Boothe
用幾個(gè)小時(shí)來(lái)制定計(jì)劃,可以節(jié)省幾周的編程時(shí)間白胀⊥指常—— 匿名
控制復(fù)雜性是計(jì)算機(jī)編程的本質(zhì)』蚋埽—— Brian Kernighan
計(jì)算機(jī)科學(xué)領(lǐng)域的所有問(wèn)題都可以通過(guò)其他方式間接解決纹份。——David Wheeler
編程是兩隊(duì)人馬在競(jìng)爭(zhēng):軟件工程師努力設(shè)計(jì)出最大最好的連白癡都會(huì)使用的程序;而宇宙在拼命制造最大最好的白癡蔓涧。到目前為止件已,宇宙是勝利者≡—— Rick Cook
調(diào)試一個(gè)初次見(jiàn)到的代碼比重寫(xiě)代碼要困難兩倍篷扩。因此,按照定義茉盏,如果你寫(xiě)代碼非常巧妙鉴未,那么沒(méi)有人足夠聰明來(lái)調(diào)試它○蹋—— Brian W. Kernighan
我不是一個(gè)偉大的程序員铜秆,我只是一個(gè)具有良好習(xí)慣的優(yōu)秀程序員。― Kent Beck
你們中大多數(shù)人都熟悉程序員的美德讶迁,有三種:那就是懶惰连茧、急躁和傲慢。– Larry Wall巍糯,Perl語(yǔ)言發(fā)明人
任何一個(gè)傻瓜都會(huì)寫(xiě)能夠讓機(jī)器理解的代碼啸驯,只有好的程序員才能寫(xiě)出人類(lèi)可以理解的代碼∷盥停——Martin Fowler
靠代碼行數(shù)來(lái)衡量開(kāi)發(fā)進(jìn)度罚斗,就像是憑重量來(lái)衡量飛機(jī)制造的進(jìn)度≌悖——比爾?蓋茨
這不是一個(gè)bug针姿,這只是一個(gè)未列出來(lái)的特性⊙嵫茫——匿名
作為一個(gè)程序員距淫,郁悶的事情是,面對(duì)一個(gè)代碼塊迅箩,卻不敢去修改溉愁。更糟糕的是处铛,這個(gè)代碼塊還是自己寫(xiě)的饲趋。—— Peyton Jones
它在我的機(jī)器上可以很好運(yùn)行撤蟆!——大部分程序員
能說(shuō)算不上什么奕塑,有本事就把你的代碼給我看看〖铱希——Linus Torvalds龄砰,Linux之父
我認(rèn)為對(duì)象就像是生物學(xué)里的細(xì)胞,或者網(wǎng)絡(luò)中的一臺(tái)計(jì)算機(jī),只能夠通過(guò)消息來(lái)通信——Alan Kay换棚,Smalltalk的發(fā)明人式镐,面向?qū)ο笾?br>
當(dāng)你選擇了一種語(yǔ)言,意味著你還選擇了一組技術(shù)固蚤、一個(gè)社區(qū)娘汞。——Joshua Bloch
質(zhì)量夕玩、速度你弦、廉價(jià),選擇其中兩個(gè)燎孟∏葑鳎——匿名
過(guò)早的優(yōu)化是罪惡之源】常——Donald Knuth
沒(méi)有什么代碼的執(zhí)行速度比空代碼更快旷偿。——Merb核心原則
如果你是房間里最聰明的人碍沐,那么你走錯(cuò)房間了狸捅。——匿名
如果只需更改一個(gè)單一的代碼行累提,你的部門(mén)需要花費(fèi)多長(zhǎng)時(shí)間尘喝?——Mary Poppendieck
九個(gè)人不能讓一個(gè)孩子在一個(gè)月內(nèi)出生≌悖——Fred Brooks朽褪,《人月神話(huà)》作者
好代碼本身就是最好的文檔。當(dāng)你需要添加一個(gè)注釋時(shí)无虚,你應(yīng)該考慮如何修改代碼才能不需要注釋缔赠。——Steve McConnell友题,Code Complete 作者
一個(gè)人在教會(huì)電腦之前嗤堰,別說(shuō)他真正理解這個(gè)東西了《然拢——Donald Knuth
UNIX理念
工程構(gòu)建
maven
gradle
基于Goovy的Gradle
Gradle的安裝非常方便踢匣,下載ZIP包,解壓到本地目錄戈抄,設(shè)置 GRADLE_HOME 環(huán)境變量并將 GRADLE_HOME/bin 加到 PATH 環(huán)境變量中离唬,安裝就完成了。
類(lèi)似于Maven的pom.xml文件划鸽,每個(gè)Gradle項(xiàng)目都需要有一個(gè)對(duì)應(yīng)的build.gradle文件输莺,該文件定義一些任務(wù)(task)來(lái)完成構(gòu)建工作
代碼版本控制
git
svn
Kotlin
kotlin是由IntelliJ IDEA的開(kāi)發(fā)商Jetbrain推出的一種基于JVM的開(kāi)發(fā)語(yǔ)言戚哎,目標(biāo)是簡(jiǎn)化Java中很多繁瑣的設(shè)計(jì),可以和Java無(wú)縫的集成
Springboot使用Kotlin和Java混合編程
微服務(wù)
以前一個(gè)大型應(yīng)用程序搞定所有需求
現(xiàn)在更傾向于把大型應(yīng)用程序切分成多個(gè)微服務(wù)嫂用,服務(wù)之間通過(guò) RPC 調(diào)用
微服務(wù)架構(gòu)的好處
服務(wù)之間相互隔離型凳,減少宕機(jī),不可用的概率
讓專(zhuān)門(mén)的api去負(fù)責(zé)專(zhuān)門(mén)的事情
small is beautiful
APIs as a product
DevOps(Development&Operations)
軟件生命周期融合
PD
Dev
QA
Ops
Rest API
使用Spring Boot&Swagger快速構(gòu)建REST API并生成優(yōu)美的API文檔