Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構 | 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者”

Netkiller Spring Cloud 手札

Spring Cloud Cookbook

Mr. Neo Chan, 陳景峯(BG7NYT)



中國廣東省深圳市望海路半島城邦三期
518067
+86 13113668890


$Id: book.xml 606 2013-05-29 09:52:58Z netkiller $

電子書最近一次更新于 2020-11-15 03:19:31 .

版權聲明

轉載請與作者聯繫,轉載時請務必標明文章原始出處和作者信息及本聲明。

http://www.netkiller.cn
http://netkiller.github.io
http://netkiller.sourceforge.net
微信訂閲號 netkiller-ebook (微信掃瞄二維碼)
QQ:13721218 請註明“讀者”
QQ群:128659835 請註明“讀者”
知乎專欄 | 多維度架構

2017-11

2020-11-15 03:19:31


致讀者

Netkiller 系列電子書始於 2000 年,風風雨雨走過20年,將在 2020 年終結,之後不在更新。作出這種決定原因很多,例如現在的閲讀習慣已經轉向短視頻,我個人的時間,身體健康情況等等......

感謝讀者粉絲這20年的支持

雖然電子書不再更新,後面我還會活躍在知乎社區和微信公眾號

目錄

1. 自述
1.1. 寫給讀者
1.2. 作者簡介
1.3. 如何獲得文檔
1.4. 打賞(Donations)
1.5. 聯繫方式
1. Spring 開發環境
1.1. Java 開發環境
1.2. 安裝 Spring Tool Suite
1.3. Dashboard
1.4. Spring Initializr - Bootstrap your application
2. Spring Boot
2.1. Spring Boot Quick start
2.1.1. 創建項目
2.1.2. pom.xml
2.1.3. Controller
2.2. Springboot with Maven
2.2.1. resource
2.2.2. Maven run
2.2.3. Spring Boot maven 插件 build-image
2.2.4. 生成項目信息
2.3. SpringApplication
2.3.1. 運行 Spring boot 項目
2.3.1.1. Linux systemd
2.3.1.2. 傳統 init.d 腳本
2.3.1.3. 編譯用於Tomcat的 War
2.3.2. @SpringBootApplication
2.3.2.1. 排除 @EnableAutoConfiguration 加載項
2.3.3. @EnableAutoConfiguration
2.3.4. @ComponentScan
2.3.5. @EntityScan 實體掃瞄
2.3.6. @EnableJpaRepositories
2.3.7. CharacterEncodingFilter
2.3.8. 隱藏 Banner
2.3.9. 實體與倉庫掃瞄
2.3.10. 列出 Beans
2.3.11. Tomcat 連接埠
2.3.12. 配置項設定
2.3.13.
2.4. Properties 配置檔案
2.4.1. application.properties 配置檔案
2.4.1.1. application.properties 參考
2.4.1.2. 啟動指定參數
2.4.1.2.1. --spring.config.location 指定配置檔案
2.4.1.2.2. --spring.profiles.active 切換配置檔案
2.4.1.3. 加載排除
2.4.1.4. PID FILE
2.4.1.5. server
2.4.1.5.1. 連接埠配置
2.4.1.5.2. Session 配置
2.4.1.5.3. cookie
2.4.1.5.4. error 路徑
2.4.1.5.5. 壓縮傳輸
2.4.1.5.6. ssl
2.4.1.6. logging
2.4.1.7. 內嵌 tomcat server
2.4.1.7.1.
2.4.1.7.2. server.tomcat.basedir
2.4.1.7.3. access.log
2.4.1.7.4. charset
2.4.1.8. servlet
2.4.1.8.1. 上傳限制
2.4.1.8.2. server.servlet.context-path
2.4.1.9. JSON 輸出與日期格式化
2.4.1.10. SMTP 相關配置
2.4.1.11. Redis
2.4.1.12. MongoDB
2.4.1.13. MySQL
2.4.1.14. Oracle
2.4.1.15. default_schema
2.4.1.16. datasource
2.4.1.17. velocity
2.4.1.18. Security 相關配置
2.4.1.19. MVC 配置
2.4.1.20. Kafka 相關配置
2.4.2. Properties 檔案
2.4.2.1. @Value 註解
2.4.2.2. containsProperty 讀取配置檔案
2.4.2.3. @PropertySource 註解載入 properties 檔案
2.4.2.4. @EnableConfigurationProperties 引用自定義 *.properties 配置檔案
2.4.2.5. 手工載入 *.properties 檔案
2.4.2.6. spring.profiles.active 參數切換配置檔案
2.4.2.7. SpringApplicationBuilder.properties() 方法添加配置項
2.4.2.8. 參數引用
2.4.2.9. 產生隨機數
2.4.2.10. List 列表類型
2.4.2.11. Map類型
2.4.2.12. Binder
2.5. Spring boot with Logging
2.5.1. 配置日誌檔案
2.5.1.1. 日誌輸出級別
2.5.1.2. Spring boot 2.1 以後的版本不打印 Mapped 日誌問題
2.5.1.3. 禁止控制台輸出日誌
2.5.1.4. 定製日誌格式
2.5.2. 打印日誌
2.5.2.1. lombok
2.5.3. logback 配置詳解
2.5.3.1. 標準輸出
2.5.3.2. 分隔日誌
2.5.3.3. 按照檔案尺寸分割日誌
2.5.3.4. 指定Class過濾日誌
2.5.3.5. 日誌寫入 MongoDB
2.5.3.6. configuration 屬性配置
2.5.3.7. contextName 設置上下文名稱
2.5.3.8. property 設置變數
2.5.3.9. encoder 日誌格式設置
2.5.3.10. RollingFileAppender
2.6. Spring boot with Jetty
2.7. Spring boot with HTTP2 SSL
2.7.1. 生成自簽名證書
2.7.2. application.properties 配置檔案
2.7.3. 啟動 Spring boot
2.7.4. restTemplate 調用實例
2.7.5. HTTP2
2.8. Spring boot with Webpage
2.8.1. Maven
2.8.2. application.properties
2.8.3. Application
2.8.4. IndexController
2.8.5. src/main/webapp/WEB-INF/jsp/index.jsp
2.8.6. 整合模板引擎
2.9. Spring boot with Velocity template
2.9.1. Maven
2.9.2. Resource
2.9.3. Application
2.9.4. RestController
2.9.5. Test
2.10. Spring boot with Thymeleaf
2.10.1. Maven
2.10.2. application.properties
2.10.3. Controller
2.10.4. HTML5 Template
2.11. Spring boot with Session share
2.11.1. Redis
2.11.1.1. Maven
2.11.1.2. application.properties
2.11.1.3. Application
2.11.2. 測試 Session
2.11.3. JDBC
2.11.4. Springboot 2.1
2.12. Spring boot with Caching
2.12.1. maven
2.12.2. 啟用 Cache
2.12.3. 測試 Controller
2.12.4. @Cacheable 的用法
2.12.5. @CachePut 用法
2.12.6. 解決Expire 和 TTL 過期時間
2.12.7. SpEL表達式
2.13. Spring boot with Email
2.13.1. Maven
2.13.2. Resource
2.13.3. POJO
2.13.4. RestController
2.13.5. Test
2.14. Spring boot with Hessian
2.14.1. Maven
2.14.2. Application
2.14.3. HessianServiceExporter
2.14.4. Service
2.14.5. RestController
2.15. Spring boot with Git version
2.15.1. CommonRestController 公共控製器
2.15.2. VersionRestController 測試控製器
2.15.3. 創建 .gitattributes 檔案
2.16. Spring boot with Data restful
2.16.1. Maven
2.17. Spring boot with ELK(Elasticsearch + Logstash + Kibana)
2.17.1. TCP 方案
2.17.2. Redis 方案
2.17.3. Kafka 方案
2.17.4. Other
2.18. Springboot with Ethereum (web3j)
2.18.1. Maven
2.18.2. application.properties
2.18.3. TestRestController
2.18.4. 測試
2.19. Spring boot with Async
2.19.1. 最簡單的配置
2.19.2. 非同步綫程池
2.20. Spring boot with csv
2.21. Spring boot with Redis
2.21.1. Spring boot with Redis
2.21.1.1. maven
2.21.1.2. application.properties
2.21.1.3. JUnit
2.21.1.4. Controller
2.21.2. Redis Pub/Sub
2.21.2.1. Redis配置類
2.21.2.2. 訂閲和發佈類
2.21.2.3. 消息發佈演示
2.22. Spring boot with MongoDB
2.22.1. Maven
2.22.2. Application
2.22.3. MongoTemplate
2.22.4. Repository
2.23. Spring boot with MySQL
2.23.1. Maven
2.23.2. Resource
2.23.3. Application
2.23.4. JdbcTemplate
2.23.5. CrudRepository
2.24. Spring boot with Oracle
2.24.1. Maven
2.24.2. application.properties
2.24.3. Application
2.24.4. CrudRepository
2.24.5. JdbcTemplate
2.24.6. Controller
2.25. Spring boot with PostgreSQL
2.25.1. pom.xml
2.25.2. application.properties
2.25.3. Application
2.25.4. CrudRepository
2.25.5. JdbcTemplate
2.25.6. Controller
2.25.7. Test
2.26. Spring boot with Datasource
2.26.1. Master / Slave 主從資料庫數據源配置
2.26.1.1. application.properties
2.26.1.2. 配置主從數據源
2.26.1.3. 選擇數據源
2.26.2. 多數據源配置
2.26.3. JPA 多數據源
2.26.4. Connection and Statement Pooling
2.26.4.1. org.apache.tomcat.jdbc.pool.DataSource
2.26.4.2. druid
2.26.4.3. c3p0 - JDBC3 Connection and Statement Pooling
2.26.4.4. dbcp2
2.26.4.5. bonecp
2.26.4.6. dbcp2
2.27. Spring boot with Elasticsearch
2.27.1. Maven
2.27.2. Application
2.27.3. application.properties
2.27.4. Domain
2.27.5. ElasticsearchRepository
2.28. Spring boot with Elasticsearch TransportClient
2.28.1. Maven
2.28.2. Application
2.28.3. application.properties
2.28.4. ElasticsearchConfiguration
2.28.5. RestController
2.29. Spring boot with Apache Hive
2.29.1. Maven
2.29.2. application.properties
2.29.3. Configuration
2.29.4. CURD 操作實例
2.30. Spring boot with Phoenix
2.30.1. Maven
2.30.2. application.properties
2.30.3. Configuration
2.31. Spring boot with RabbitMQ(AMQP)
2.31.1. maven
2.31.2. RabbitMQConfig
2.31.3. 生產者
2.31.4. 消費者
2.32. Spring boot with Apache Kafka
2.32.1. 安裝 kafka
2.32.2. maven
2.32.3. Spring boot Application
2.32.4. EnableKafka
2.32.5. KafkaListener
2.32.6. 測試
2.32.7. 完整的發佈訂閲實例
2.32.7.1. Consumer
2.32.7.2. Producer
2.32.7.3. Test
2.32.8. Spring cloud with Kafka
2.32.8.1. Application 主檔案
2.32.8.2. 資源配置檔案
2.32.8.2.1. application.properties
2.32.8.2.2. bootstrap.properties
2.32.8.2.3. Git 倉庫
2.32.8.3. 啟用 kafka
2.32.8.4. 消息發佈主程序
2.33. Spring boot with Scheduling
2.33.1. Application.java
2.33.2. Component
2.33.3. 查看日誌
2.33.4. 計劃任務控制開關
2.33.5. @Scheduled 詳解
2.33.5.1. 每3秒鐘一運行一次
2.33.5.2. 凌晨23點運行
2.33.6. Timer 例子
2.33.7. ScheduledExecutorService 例子
2.34. Spring boot with Swagger
2.34.1. Maven 檔案
2.34.2. SpringApplication
2.34.3. EnableSwagger2
2.34.4. RestController
2.34.5. @Api()
2.34.6. @ApiOperation()
2.34.7. @ApiResponses
2.34.8. @ApiModel 實體類
2.35. Spring boot with lombok
2.35.1. @Builder
2.35.2. @Slf4j 註解
2.36. Spring boot with Docker
2.36.1. 通過 Docker 命令構建鏡像
2.36.1.1. 手工編譯鏡像
2.36.1.2. Dockerfile 放在 src/main/docker/Dockerfile 下
2.36.1.3. 通過參數指定 Springboot 檔案
2.36.1.4. SPRING_PROFILES_ACTIVE 指定配置檔案
2.36.1.5. 推送鏡像到倉庫
2.36.2. 通過 Maven 構建 Docker 鏡像
2.36.2.1. Maven + Dockerfile 方案一
2.36.2.2. Maven + Dockerfile 方案二
2.36.2.3. Maven 不使用 Dockerfile 檔案
2.36.2.4. 推送鏡像
2.36.3. [ERROR] No plugin found for prefix 'dockerfile' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories [local (/Users/neo/.m2/repository), central (https://repo.maven.apache.org/maven2)] -> [Help 1]
2.36.4. curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to localhost:8888
2.37. Spring boot with Docker stack
2.37.1. 編譯 Docker 鏡像
2.37.2.
2.38. Spring boot with Kubernetes
2.38.1. Kubernetes 編排腳本
2.38.2. 部署鏡像
2.39. Spring boot with command line
2.39.1. Maven
2.39.2. CommandLineRunner 例子
2.39.3. ApplicationRunner 例子
2.40. Spring Boot Actuator
2.40.1. Maven 依賴
2.40.2. 與 Spring Boot Actuator 有關的配置
2.40.2.1. 禁用HTTP端點
2.40.2.2. 安全配置
2.40.3. actuator 介面
2.40.4. 健康狀態
2.40.4.1. 健康狀態
2.40.5. 關機
2.40.6. info 配置信息
2.40.7. 計劃任務
2.41. String boot with RestTemplate
2.41.1. RestTemplate Example
2.41.1.1. pom.xml
2.41.1.2. web.xml
2.41.1.3. springframework.xml
2.41.1.4. RestController
2.41.1.5. POJO
2.41.1.6. 在控製器中完整實例
2.41.1.7. 測試
2.41.2. GET 操作
2.41.2.1. 返回字元串
2.41.2.2. 傳遞 GET 參數
2.41.3. POST 操作
2.41.3.1. postForObject
2.41.3.1.1. 傳遞對象
2.41.3.1.2. 傳遞資料結構 MultiValueMap
2.41.3.2. postForEntity
2.41.4. PUT 操作
2.41.5. Delete 操作
2.41.6. 上傳檔案
2.41.7. HTTP Auth
2.41.7.1. Client
2.41.8. PKCS12
2.41.9. Timeout 超時設置
2.41.9.1. JRE 啟動參數設置超時時間
2.41.9.2. RestTemplate timeout with SimpleClientHttpRequestFactory
2.41.9.3. @Configuration 方式
2.42. SpringBootTest
2.42.1. Maven 依賴
2.42.2. 測試類
2.42.2.1. Junit基本註解介紹
2.42.3.
2.42.3.1. Assert.assertEquals 判斷相等
2.42.3.2. Assert.assertTrue
2.42.4. JPA 測試
2.42.5.
2.42.6. Controller單元測試
2.42.7. WebTestClient
2.43. Spring boot with Aop
2.43.1. Aspect
2.43.1.1. Maven
2.43.1.2. Pojo 類
2.43.1.3. Service 類
2.43.1.4. Aspect 類
2.43.1.5. 控製器
2.43.1.6. Application
2.43.1.7. 測試
2.44. Spring boot with starter
2.44.1. 實現 starter
2.44.1.1. Maven pom.xml 依賴包
2.44.1.2. 配置檔案處理
2.44.1.3. 自動配置檔案
2.44.1.4. 啟用 starter 的自定義註解
2.44.2. 引用 starter
2.44.2.1. Maven pom.xml 引入依賴
2.44.2.2. 通過註解配置 starter
2.44.2.3. 測試運行結果
2.45. Spring boot with Grafana
2.45.1. Springboot 整合 InfluxDB
2.45.2. InfluxDB
2.46. Spring Boot with Prometheus
2.46.1. Maven 依賴
2.46.2. application.properties 配置檔案
2.46.3. 啟動類
2.46.4. 測試
2.46.5. 控製器監控
2.46.6. 自定義埋點監控
2.46.6.1. 攔截器
2.46.6.2. 計數器元件
2.46.6.3. 配置類
2.46.6.4. 測試埋點效果
3. Spring MVC
3.1. @EnableWebMvc
3.1.1. CORS 跨域請求
3.1.2. Spring MVC CORS with WebMvcConfigurerAdapter
3.2. @Controller
3.2.1. @RequestMapping
3.2.1.1. @RequestMapping("/")
3.2.1.2. 映射多個URL
3.2.1.3. 匹配通配符
3.2.1.4. headers
3.2.1.5. @GetMapping
3.2.1.6. @PostMapping
3.2.1.7. RequestMapping with Request Parameters - @RequestParam
3.2.1.7.1. HTTP GET
3.2.1.7.2. HTTP POST
3.2.1.7.3. @RequestParam 傳遞特殊字元串
3.2.1.7.4. 傳遞日期參數
3.2.1.7.5. 上傳檔案
3.2.1.7.6. @RequestParam - POST 數組
3.2.2. @RequestBody
3.2.2.1. @RequestBody 傳遞 List
3.2.2.2. 傳遞 Map 數據
3.2.3. @RequestHeader - 獲取 HTTP Header 信息
3.2.3.1. @RequestHeader 從 Http 頭中獲取變數
3.2.4. RequestMapping with Path Variables - @PathVariable
3.2.4.1. URL 參數傳遞
3.2.4.2. 預設值
3.2.4.3. URL 傳遞 Date 類型
3.2.4.4. 處理特殊字元
3.2.4.5. @PathVariable 注意事項
3.2.5. @ModelAttribute
3.2.6. @ResponseBody
3.2.6.1. 直接返回HTML
3.2.7. @ResponseStatus 設置 HTTP 狀態
3.2.8. @CrossOrigin
3.2.8.1. maxAge
3.2.9. @CookieValue - 獲取 Cookie 值
3.2.10. @SessionAttributes
3.2.11. ModelAndView
3.2.11.1. 變數傳遞
3.2.11.2. ModelMap 傳遞多個變數
3.2.11.3. redirect
3.2.11.4. ArrayList
3.2.11.5. HashMap
3.2.11.6. 傳遞對象
3.2.11.7.
3.2.12. HttpServletRequest / HttpServletResponse
3.2.12.1. HttpServletResponse
3.2.12.2. HttpServletRequest
3.3. @RestController
3.3.1. 返回實體
3.3.2. JSON
3.3.3. 處理原始 RAW JSON 數據
3.3.4. 返回 JSON 對象 NULL 專為 "" 字元串
3.3.5. XML
3.3.6. 兼容傳統 json 介面
3.3.7. @PageableDefault 分頁
3.3.8. 上傳檔案
3.4. View
3.4.1. 配置靜態檔案目錄
3.4.2. 添加靜態檔案目錄
3.4.3. Using Spring’s form tag library
3.4.3.1. css
3.4.3.1.1. cssClass
3.4.3.1.2. cssStyle
3.4.3.1.3. cssErrorClass
3.4.3.2. cssClass
3.4.4. Thymeleaf
3.4.4.1. Maven pom.xml
3.4.4.2. Spring 配置
3.4.4.3. controller
3.4.4.4. HTML5 Template
3.4.4.5. thymeleaf 渲染表格
3.4.4.6. URL 連結
3.4.4.7. 拆分字元串
3.4.4.8. 日期格式化
3.4.5. FreeMarker
3.5. Service
3.5.1. Application
3.5.2. 定義介面
3.5.3. 實現介面
3.5.4. 調用 Service
3.5.5. context.getBean 調用 Service
3.6. i18n 國際化
3.6.1. 在 appliction.properties 中配置啟用 i18n
3.6.2. 創建語言包檔案
3.6.3. 控製器重引用語言包
3.6.4. 參數傳遞
3.7. 校驗器(Validator)
3.7.1. 常規用法
3.7.1.1. 定義校驗器
3.7.1.2. 獲取 BindingResult 結果
3.7.1.3. 測試校驗效果
3.7.2. 自定義註解
3.7.2.1. 定義校驗器註解介面
3.7.2.2. 實現介面
3.7.2.3. 註解用法
3.7.2.4. 測試註解
3.8. Interceptor
3.8.1. WebMvcConfigurerAdapter
3.8.2. HandlerInterceptor
3.9. FAQ
3.9.1. o.s.web.servlet.PageNotFound
3.9.2. HTTP Status 500 - Handler processing failed; nested exception is java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config
3.9.3. 同時使用 Thymeleaf 與 JSP
3.9.4. 排除靜態內容
3.9.5. HTTP Status 406
3.9.6. Caused by: java.lang.IllegalArgumentException: Not a managed type: class common.domain.Article
3.9.7. {"error":"unauthorized","error_description":"Full authentication is required to access this resource"}
4. WebFlux framework
4.1. Getting Started
4.1.1. Maven
4.1.2. Application
4.1.3. RestController
4.1.4. 測試
4.2. WebFlux Router
4.2.1. Component 原件
4.2.2. 路由配置
4.2.3. Thymeleaf
4.2.3.1. 模板引擎 Thymeleaf 依賴
4.2.3.2. application.properties 相關的配置
4.2.3.3.
4.2.3.4. Tymeleaf 視圖
4.2.4. Webflux Redis
4.2.4.1. Maven Redis 依賴
4.2.4.2. Redis 配置
4.2.4.3. Config
4.2.4.4. Service
4.2.4.5.
4.2.5. Webflux Mongdb
4.2.5.1. Maven 依賴
4.2.5.2. Repository
4.2.5.3. Service
4.2.5.4. 控製器
4.2.6. SSE
4.2.7. Mono/Flux
5. Spring Data
5.1. Jackson
5.1.1. @JsonIgnore 返回json是不含有該欄位
5.1.2. @JsonFormat 格式化 json 時間格式
5.1.2.1. 日期格式化
5.1.2.2. 時區
5.1.2.3. 枚舉
5.1.2.4. 枚舉
5.1.3. @JsonComponent
5.2. Spring Data with Redis
5.2.1. 整合 Redis XML 方式
5.2.1.1. pom.xml
5.2.1.2. springframework-servlet.xml
5.2.1.3. Controller
5.2.1.4. index.jsp
5.2.1.5. 測試
5.2.2. RedisTemplate
5.2.2.1. stringRedisTemplate 基本用法
5.2.2.2. 設置緩存時間
5.2.2.3. 字元串截取
5.2.2.4. 追加字元串
5.2.2.5. 設置鍵的字元串值並返回其舊值
5.2.2.6. increment
5.2.2.7. 刪除 key
5.2.2.8. 返回字元串長度
5.2.2.9. 如果key不存便緩存。
5.2.2.10. 緩存多個值 /獲取多個值 multiSet / multiGet
5.2.2.11. List
5.2.2.11.1. rightPush
5.2.2.11.2. rightPushAll
5.2.2.11.3. rightPushIfPresent
5.2.2.11.4. leftPush
5.2.2.11.5. leftPushAll
5.2.2.11.6. range
5.2.2.12. SET 數據類型
5.2.2.12.1. 返回集合中的所有成員
5.2.2.12.2. 取出一個成員
5.2.2.12.3. 隨機獲取無序集合中的一個元素
5.2.2.12.4. 隨機獲取 n 個成員(存在重複數據)
5.2.2.12.5. 隨機獲取 n 個不重複成員
5.2.2.12.6. 在兩個 SET 間移動數據
5.2.2.12.7. 成員刪除
5.2.2.12.8. 返回集合數量
5.2.2.12.9. 判斷元素是否在集合成員中
5.2.2.12.10. 對比兩個集合求交集
5.2.2.12.11. 對比兩個集合求交集,然後存儲到新的 key 中
5.2.2.12.12. 合併兩個集合,並去處重複數據
5.2.2.12.13. 合併兩個集合去重複後保存到新的 key 中
5.2.2.12.14. 計算兩個合集的差集
5.2.2.12.15. 計算兩個合集的差集,然後保存到新的 key 中
5.2.2.12.16. 遍歷 SET 集合
5.2.2.13. 有序的 set 集合
5.2.2.14. Hash
5.2.2.14.1. put
5.2.2.14.2. putAll
5.2.2.14.3. 從鍵中的哈希獲取給定hashKey的值
5.2.2.14.4. delete
5.2.2.14.5. 確定哈希hashKey是否存在
5.2.2.14.6. 從哈希中獲取指定的多個 hashKey 的值
5.2.2.14.7. 只有hashKey不存在時才能添加值
5.2.2.14.8. 獲取整個Hash
5.2.2.14.9. 獲取所有key
5.2.2.14.10. 通過 hashKey 獲取所有值
5.2.2.14.11. 值加法操作
5.2.2.14.12. 遍歷 Hash 表
5.2.2.15. 過期時間未執行
5.2.2.16. setBit / getBit 二進制位操作
5.2.2.17. 存儲 Json 對象
5.2.2.17.1. 整合 RedisTemplate 定義新類 JsonRedisTemplate
5.2.2.17.2. 配置 Redis
5.2.2.17.3. 測試
5.2.3. Spring Data Redis - Repository Examples
5.2.3.1. @EnableRedisRepositories 啟動 Redis 倉庫
5.2.3.2. 定義 Domain 類
5.2.3.3. Repository 介面
5.2.3.4. 測試代碼
5.3. Spring Data with MongoDB
5.3.1. Example Spring Data MongoDB
5.3.1.1. pom.xml
5.3.1.2. springframework-servlet.xml
5.3.1.3. POJO
5.3.1.4. Controller
5.3.1.5. 查看測試結果
5.3.1.6. 條件查詢
5.3.2. @Document
5.3.2.1. 指定表名
5.3.2.2. @Id
5.3.2.3. @Version
5.3.2.4. @Field 定義欄位名
5.3.2.5. @Indexed
5.3.2.5.1. 普通索引
5.3.2.5.2. 唯一索引
5.3.2.5.3. 索引排序方式
5.3.2.5.4. 稀疏索引
5.3.2.5.5. 索引過期時間設置
5.3.2.6. @CompoundIndex 復合索引
5.3.2.6.1. 普通復合索引
5.3.2.6.2. 唯一復合索引
5.3.2.7. @TextIndexed
5.3.2.8. @GeoSpatialIndex 地理位置索引
5.3.2.9. @Transient 丟棄數據,不存到 mongodb
5.3.2.10. @DBRef 做外外鍵引用
5.3.2.10.1. Article 類
5.3.2.10.2. Hypermedia 類
5.3.2.10.3. MongoRepository
5.3.2.10.4. RestController
5.3.2.10.5. 運行結果
5.3.2.11. @DateTimeFormat
5.3.2.12. @NumberFormat
5.3.2.13. 在 @Document 中使用 Enum 類型
5.3.2.14. 在 @Document 中定義資料結構 List/Map
5.3.2.15. GeoJson 數據類型
5.3.3. MongoRepository
5.3.3.1. 掃瞄倉庫介面
5.3.3.2. findAll()
5.3.3.3. deleteAll()
5.3.3.4. save()
5.3.3.5. count()
5.3.3.6. exists() 判斷是否存在
5.3.3.7. existsById()
5.3.3.8. findByXXXX
5.3.3.9. findAll with OrderBy
5.3.3.9.1. order by boolean 布爾型數據排序
5.3.3.10. findAll with Sort
5.3.3.11. FindAll with Pageable
5.3.3.11.1. PageRequest - springboot 1.x 舊版本
5.3.3.12. StartingWith 和 EndingWith
5.3.3.13. Between
5.3.3.14. Before / After
5.3.3.15. @Query
5.3.4. mongoTemplate
5.3.4.1. Save 保存
5.3.4.2. Insert
5.3.4.3. updateFirst 修改符合條件第一條記錄
5.3.4.4. updateMulti 修改符合條件的所有
5.3.4.5. 查找並保存
5.3.4.6. upsert - 修改符合條件時如果不存在則添加
5.3.4.7. 刪除
5.3.4.8. 查找一條數據
5.3.4.9. 查找所有數據
5.3.4.10. Query
5.3.4.10.1. 翻頁
5.3.4.10.2. between
5.3.4.11. Criteria
5.3.4.11.1. is
5.3.4.11.2. Regex 正則表達式搜索
5.3.4.11.3. lt 和 gt
5.3.4.11.4. exists()
5.3.4.11.5. 包含
5.3.4.12. Update
5.3.4.12.1. set
5.3.4.12.2. 追加數據
5.3.4.12.3. 更新數據
5.3.4.12.4. 刪除數據
5.3.4.12.5. inc
5.3.4.12.6. update.addToSet
5.3.4.13. BasicUpdate
5.3.4.14. Sort
5.3.4.15. Query + PageRequest
5.3.4.16. newAggregation
5.3.4.17. 創建索引
5.3.4.18. 子對象操作
5.3.4.18.1. List 類型
5.3.5. GeoJson 反序列化
5.3.6. FAQ
5.3.6.1. location object expected, location array not in correct format; nested exception is com.mongodb.MongoWriteException: location object expected, location array not in correct format
5.4. Spring Data with MySQL
5.4.1. 選擇資料庫表引擎
5.4.2. 聲明實體
5.4.2.1. @Entity 聲明實體
5.4.2.2. @Table 定義表名
5.4.2.2.1. catalog
5.4.2.2.2. schema
5.4.2.2.3. uniqueConstraints
5.4.2.3. @Id 定義主鍵
5.4.2.4. @Column 定義欄位
5.4.2.4.1. 欄位長度
5.4.2.4.2. 浮點型
5.4.2.4.3. 創建於更新控制
5.4.2.4.4. TEXT 類型
5.4.2.4.5. 整形數據類型
5.4.2.5. @Lob 註解屬性將被持久化為 Blog 或 Clob 類型
5.4.2.6. @NotNull 不能為空聲明
5.4.2.7. @Temporal 日期定義
5.4.2.8. @DateTimeFormat 處理日期時間格式
5.4.2.9. 預設時間規則
5.4.2.9.1. CreatedDate
5.4.2.9.2. 與時間日期有關的 hibernate 註解
5.4.2.9.3. 資料庫級別的預設創建日期時間定義
5.4.2.9.4. 資料庫級別的預設創建日期與更新時間定義
5.4.2.9.5. 最後修改時間
5.4.2.10. Enum 枚舉數據類型
5.4.2.10.1. 實體中處理 enum 類型
5.4.2.10.2. 資料庫枚舉類型
5.4.2.11. SET 資料結構
5.4.2.12. JSON 數據類型
5.4.2.13. 索引
5.4.2.13.1. 普通索引
5.4.2.13.2. 唯一索引
5.4.2.13.3. 復合索引
5.4.2.14. 創建復合主鍵
5.4.2.15. @JoinColumn
5.4.2.16. @OneToOne
5.4.2.17. OneToMany 一對多
5.4.2.18. ManyToMany 多對多
5.4.2.19. 外鍵級聯刪除
5.4.2.20. 其他
5.4.2.20.1. Cascade
5.4.2.20.2. @JsonIgnore
5.4.2.20.3. @EnableJpaAuditing 開啟 JPA 審計功能
5.4.3. 實體繼承
5.4.4. Repository
5.4.4.1. CrudRepository
5.4.4.2. JpaRepository
5.4.4.3. findByXXX
5.4.4.3.1. 傳 Boolean 參數
5.4.4.3.2. Eunm 傳遞枚舉參數
5.4.4.4. count 操作
5.4.4.5. OrderBy
5.4.4.6. GreaterThan
5.4.4.7. PageRequest 翻頁操作
5.4.4.7.1. PageRequest.of
5.4.4.7.2. Pageable
5.4.4.8. Sort 排序操作操作
5.4.4.9. Query
5.4.4.9.1. 參數傳遞
5.4.4.9.2. 原生 SQL
5.4.4.9.3. @Query 與 Pageagble
5.4.4.9.4. 返回指定欄位
5.4.4.9.5. 返回指定的模型
5.4.4.10. @Transactional
5.4.4.10.1. 刪除更新需要 @Transactional 註解
5.4.4.10.2. 回滾操作
5.4.4.11. 鎖 @Lock
5.5. EntityManager
5.6. Spring Data with JdbcTemplate
5.6.1. execute
5.6.2. queryForInt
5.6.3. queryForLong
5.6.4. queryForObject
5.6.4.1. 返回整形與字元型
5.6.4.2. 查詢 Double 類型資料庫
5.6.4.3. 返回日期
5.6.4.4. 返回結果集
5.6.4.5. 通過 "?" 向SQL傳遞參數
5.6.4.6. RowMapper 記錄映射
5.6.5. queryForList
5.6.5.1. Iterator 用法
5.6.5.2. for 循環
5.6.5.3. forEach 用法
5.6.6. queryForMap
5.6.7. query
5.6.7.1. ResultSet
5.6.7.2. ResultSetExtractor
5.6.7.3. RowMapper
5.6.8. queryForRowSet
5.6.9. update
5.6.10.
5.6.11. 實例參考
5.6.11.1. 參數傳遞技巧
5.7. Spring Data with Elasticsearch
5.7.1. 內嵌 Elasticsearch
5.7.1.1. Maven
5.7.1.2. src/main/resources/application.properties
5.7.1.3. Domain Class
5.7.1.4. ElasticsearchRepository
5.7.1.5. SearchRestController
5.7.1.6. 測試
5.7.2. 集群模式
5.7.3. Document
5.7.4. Elasticsearch 刪除操作
5.7.5. FAQ
5.7.5.1. java.lang.IllegalStateException: Received message from unsupported version: [2.0.0] minimal compatible version is: [5.0.0]
5.8. Spring Data FAQ
5.8.1. No identifier specified for entity
5.8.2. Oracle Date 類型顯示日期和時間
5.8.3. java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer
5.8.4. Executing an update/delete query; nested exception is javax.persistence.TransactionRequiredException: Executing an update/delete query
6. Spring Security
6.1. Spring Security with HTTP Auth
6.1.1. 預設配置
6.1.2. 設置用戶名和密碼
6.1.3. 禁用 Security
6.2. Spring boot with Spring security
6.2.1. Maven
6.2.2. Reource
6.2.3. Application
6.2.4. WebSecurityConfigurer
6.2.5. RestController
6.2.6. 測試
6.2.7. Spring + Security + MongoDB
6.2.7.1. Account
6.2.7.2. AccountRepository
6.2.7.3. WebSecurityConfiguration
6.3. Spring Boot with Web Security
6.3.1. EnableWebSecurity
6.3.2. Web靜態資源
6.3.3. 正則匹配
6.3.4. 登陸頁面,失敗頁面,登陸中頁面
6.3.5. CORS
6.3.6. X-Frame-Options 安全
6.4. 訪問控制列表(Access Control List,ACL)
6.4.1. antMatchers
6.4.2. HTTP Auth
6.4.3. Rest
6.4.4. hasRole
6.4.5. hasAnyRole()
6.4.6. withUser
6.4.6.1. 添加用戶
6.4.6.2. 添加多個用戶,並指定角色
6.4.6.3. 獲取當前用戶
6.5. Spring Authorization Server
6.5.1. Oauth2 協議
6.5.1.1. token
6.5.1.2. grant_type
6.5.1.3. 授權碼授權模式(Authorization Code Grant)
6.5.1.4. 密碼模式(Resource Owner Password Credentials Grant)
6.5.1.5. 客戶端憑證模式(Client Credentials Grant)
6.5.1.6. 刷新 TOKEN 方式
6.5.2. Maven 依賴
6.5.3. Spring cloud with Oauth2
6.5.3.1. authorization_code
6.5.3.1.1. 驗證伺服器器
6.5.3.2. Spring boot with Oauth2 - Password
6.5.3.2.1. Maven
6.5.3.2.2. Password tools
6.5.3.2.3. Server
6.5.3.2.4. Spring boot with Oauth2 RestTemplate
6.5.3.3. Spring boot with Oauth2 jwt
6.5.3.3.1. Maven
6.5.3.3.2. Authorization Server
6.5.3.3.3. Resource Server
6.5.3.3.4. Web Security
6.5.3.3.5. 插入數據
6.5.3.3.6. 使用 CURL 測試 JWT
6.5.3.3.7. 測試 Shell
6.5.3.3.8. refresh_token
6.5.3.4. Spring boot with Oauth2 jwt 非對稱證書
6.5.3.4.1. 創建證書
6.5.3.4.2. Authorization Server
6.5.3.4.3. Resource Server
6.5.3.5. Apple iOS 訪問 Oauth2
6.5.3.6. Oauth2 客戶端
6.5.3.6.1.
6.5.3.6.2. application.yml
6.5.3.6.3. SpringApplication
6.5.3.6.4. WebSecurityConfigurer
6.5.3.6.5. TestController
6.5.3.7. Android Oauth2 + Jwt example
6.5.3.8. RestTemplate 使用 HttpClient
6.5.3.8.1. Maven
6.5.3.8.2. SpringBootApplication
6.5.3.8.3. ClientRestController
6.5.3.8.4. Test
6.5.3.9. 自簽名證書信任問題
6.5.3.10. Principal
6.5.3.11. SecurityContextHolder 對象
6.5.3.12. 資源伺服器配置
6.5.3.12.1. access()
6.5.3.13. Client
6.5.3.13.1. Overriding Spring Boot 2.0 Auto-configuration
6.5.3.14. Oauth2 常見問題
6.5.3.14.1. 修改 /oauth/token 路徑
6.5.3.14.2. password 認證方式靜態配置用戶列表
7. Spring Cloud
7.1. Spring Cloud Config
7.1.1. Maven 項目 pom.xml 檔案
7.1.2. Server
7.1.2.1. Maven config 模組
7.1.2.2. Application
7.1.2.3. application.properties
7.1.2.4. Git 倉庫
7.1.2.5. 測試伺服器
7.1.3. Client
7.1.3.1. Maven pom.xml
7.1.3.2. Application
7.1.3.3. bootstrap.properties
7.1.3.4. 測試 client
7.1.4. Config 高級配置
7.1.4.1. 倉庫配置
7.1.4.1.1. 分支
7.1.4.1.2. basedir
7.1.4.1.3. HTTP Auth
7.1.4.1.4. 本地git倉庫
7.1.4.1.5. native 本地配置
7.1.4.2. Config server 用戶認證
7.1.4.2.1. Server 配置
7.1.4.2.2. Client 配置
7.1.4.3. 加密敏感數據
7.1.4.4. Spring Cloud Config JDBC Backend
7.1.4.4.1. Maven pom.xml
7.1.4.4.2. 資料庫表結構
7.1.4.4.3. Config 伺服器
7.1.4.4.4. application.properties
7.1.5. Old
7.1.5.1. Server (Camden.SR5)
7.1.5.2. Client (Camden.SR5)
7.2. Spring Cloud Consol
7.2.1. Spring Cloud Consul 配置
7.2.2. Maven 父項目
7.2.3. Consul 服務生產者
7.2.3.1. Maven
7.2.3.2. application.properties
7.2.3.3. SpringApplication
7.2.3.4. TestController
7.2.4. Consul 服務消費者
7.2.4.1. Maven
7.2.4.2. application.properties
7.2.4.3. SpringApplication
7.2.4.4. TestController
7.2.5. Openfeign
7.2.5.1. Maven
7.2.5.2. application.properties
7.2.5.3. SpringApplication
7.2.5.4. Feign 介面
7.2.5.5. TestController
7.3. Spring Cloud Netflix
7.3.1. Eureka Server
7.3.1.1. Maven
7.3.1.2. Application
7.3.1.3. application.properties
7.3.1.4. 檢查註冊伺服器
7.3.2. Eureka Client
7.3.2.1. Maven
7.3.2.2. Application
7.3.2.3. RestController
7.3.2.4. application.properties
7.3.2.5. 測試
7.3.3. Feign client
7.3.3.1. Maven
7.3.3.2. Application
7.3.3.3. interface
7.3.3.4. application.properties
7.3.3.5. 測試
7.3.3.6. fallback
7.3.4. 為 Eureka Server 增加用戶認證
7.3.4.1. Maven
7.3.4.2. application.properties
7.3.4.3. Eureka Client
7.3.4.4. Feign Client
7.3.5. Eureka 配置項
7.3.5.1. /eureka/apps
7.3.5.2. Eureka instance 配置項
7.3.5.3. Eureka client 配置項
7.3.5.4. Eureka Server配置項
7.3.6. ribbon
7.3.6.1.
7.3.6.2. LoadBalancerClient 實例
7.3.6.2.1. application.properties
7.3.6.2.2. LoadBalancerClient 獲取伺服器列表
7.3.6.3. Ribbon 相關配置
7.3.6.3.1. 內置負載均衡策略
7.3.7. 獲取 EurekaClient 信息
7.3.8. Zuul
7.3.8.1. Maven
7.3.8.2. EnableZuulProxy
7.3.8.3. application.yml
7.3.8.4. 負載均衡配置
7.4. Openfeign
7.4.1. Openfeign 掃瞄包配置
7.4.2. 用戶認證
7.4.3. 配置連接方式
7.4.4.
7.5. Spring Cloud Gateway
7.5.1. Gateway 例子
7.5.1.1. Maven
7.5.1.2. SpringApplication
7.5.1.3. application.yml
7.5.1.4. RouteLocator 方式
7.5.2. 路由配置
7.5.2.1. 轉發操作
7.5.2.2. URL 參數
7.6. Spring Cloud Stream
7.7. Spring Cloud Bus
7.8. Spring Cloud Sleuth
7.9. Spring Cloud 相關的 application.properties 配置
7.9.1. 啟用或禁用 bootstrap
7.9.2. bootstrap.properties 配置檔案
7.10. Spring Cloud with Kubernetes
7.10.1. Config
7.10.1.1. Maven 依賴
7.10.1.2. Spring Cloud 配置檔案
7.10.1.3. 程序檔案
7.10.1.3.1. SpringBootApplication 啟動檔案
7.10.1.3.2. 配置類
7.10.1.3.3. 控製器
7.10.1.4. Kubernetes 編排腳本
7.10.1.5. 測試
7.10.2. 註冊發現
7.10.2.1. Maven 父項目
7.10.2.2. provider
7.10.2.2.1. Maven 依賴
7.10.2.2.2. Springboot 啟動類
7.10.2.2.3. 控製器
7.10.2.2.4. application.properties 配置檔案
7.10.2.2.5. Kubernetes provider 編排腳本
7.10.2.3. consumer
7.10.2.3.1. Maven 依賴
7.10.2.3.2. Springboot 啟動類
7.10.2.3.3. 控製器
7.10.2.3.4. FeignClient 介面
7.10.2.3.5. application.properties 配置檔案
7.10.2.3.6. Kubernetes consumer 編排腳本
7.10.2.4. 測試
7.10.2.5.
7.11. FAQ
7.11.1. Cannot execute request on any known server
7.11.2. @EnableDiscoveryClient與@EnableEurekaClient 區別
7.11.3. Feign請求超時
7.11.4. 已停止的微服務節點註銷慢或不註銷
7.11.5. Feign 啟動出錯 PathVariable annotation was empty on param 0.
7.11.6. Feign 提示 Consider defining a bean of type 'common.feign.Cms' in your configuration.
7.11.7. Load balancer does not have available server for client
7.11.8. Eureka Client (Dalston.SR1)
7.11.8.1. Maven
7.11.8.2. Application
7.11.8.3. RestController
7.11.8.4. application.properties
7.11.8.5. 測試
7.11.9. Config Server(1.3.1.RELEASE)
7.11.9.1. Server
7.11.9.1.1. Maven
7.11.9.1.2. Application
7.11.9.1.3. application.properties
7.11.9.1.4. Git 倉庫
7.11.9.1.5. 測試伺服器
7.11.9.2. Client
7.11.9.2.1. Maven pom.xml
7.11.9.2.2. Application
7.11.9.2.3. bootstrap.properties
7.11.9.2.4. 測試 client
8. Tomcat Spring 運行環境
8.1. Maven
8.2. Spring Boot Quick start
8.2.1. 創建項目
8.2.2. pom.xml
8.2.3. Controller
8.3. Spring MVC configuration
8.4. Tomcat
8.5. 整合 Mybatis
8.5.1. pom.xml
8.5.2. properties
8.5.3. dataSource
8.5.4. SqlSessionFactory
8.5.5. Mapper 掃瞄
8.5.6. Mapper 單一class映射
8.5.7. Service
8.5.8. 測試實例
9. Miscellaneous
9.1. Object to Json
9.2. Json To Object
10. FAQ
10.1. org.hibernate.dialect.Oracle10gDialect does not support identity key generation
10.2. No identifier specified for entity
10.3. Could not read document: Invalid UTF-8 middle byte 0xd0
10.4. java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection
10.5. Field javaMailSender in cn.netkiller.rest.EmailRestController required a bean of type 'org.springframework.mail.javamail.JavaMailSender' that could not be found.
10.6. org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host "172.16.0.3", user "test", database "test ", SSL off
10.7. Spring boot 怎樣顯示執行的SQL語句
10.8. Cannot determine embedded database driver class for database type NONE
10.9. Spring boot / Spring cloud 時區差8個小時
10.10. @Value 取不到值
10.11. Spring boot 2.1.0
10.12. Field authenticationManager in cn.netkiller.oauth2.config.AuthorizationServerConfigurer required a bean of type 'org.springframework.security.authentication.AuthenticationManager' that could not be found.
10.13. 打印 Bean 信息
1. 附錄
1.1. Springboot example

範例清單

2.1. Spring boot with Velocity template (pom.xml)
2.2. Spring boot with Email (pom.xml)
2.3. RedisTemplate
2.4. Example Spring boot with Oracle
2.5. Spring boot with Apache kafka.
2.6. Spring boot with Apache kafka.
2.7. Test Spring Kafka
5.1. Spring Data Redis Example
5.2. Spring Data MongoDB - springframework-servlet.xml
7.1. Share feign interface.
8.1. MyBatis