鐵人賽 在這個春天變成顯學的時代 下 - Jian-Min-Huang/tech-note GitHub Wiki
前言
不知道有沒有跟我一樣,在Spring 2/3 的年代,試著打出自己的宇宙戰艦大和號。
維大力!?你在說什麼聽不懂?哈哈。
沒有啦,其實就是因應 Spring 可以快速集成各個框架跟工具的特性,預先定義好的 project template。
但這個其實早就有類似的概念,在 Maven 叫做 Archetype。
甚至 Spring 自己最後搞了一個 Spring Boot,都是想要讓整個 Spring 專案變得更快速更敏捷。
看看這連結,真是說有多狂就有多狂。
承上集,我們知道 Spring 能紅一開始是來自於他的 DI/IOC 和 AOP 的實現。
那為什麼它後面不只能接著紅,還繼續一路紅到變業界標準,一堆 SSH、S2SH、SSM 各種組合聯手出擊。
就是厲害在他那個快速集成的特性,恐怕我們所知道的 Java 框架你是找不到一個沒有現成範例沒跟他結合的。
甚至連一些非 Java 開發的東西都有寫好的 Java Client Library 的集成。
配上微服務模組化的浪潮,換句話說,真滴猛。
要真說缺點的話,恐怕也只有太胖這個問題,但這也不是只有它胖,JVM 也胖 (我也胖,淚奔)
那我們今天想把常用的 Spring 各個面相的集成給他巡一遍,GO!GO!GO!
各方面的集成
- web
spring-boot-starter-web, Spring Boot for Spring MVC
Jackson in spring-boot-starter-web, Jackson Json Util (有些人喜歡用 gson)
jwt, Json Web Token
- schedule
Spring Schedule in spring-context, Spring Schedule (有些人喜歡用 Quartz)
shedlock-spring, Schedule Lock
- cache
spring-boot-starter-cache, Spring Boot for Spring Cache
spring-boot-starter-data-redis, Spring Boot for Redis Client
any else cache client related: memcached, hazelcast, ignite
- message queue
spring-cloud-starter-stream, Spring Boot for Spring Cloud Stream
any else message queue client related: RabbitMQ, Apache Kafka, Kafka Streams, ...
- data persist related
spring-boot-starter-data-jpa, Spring Boot for Spring Data JPA
mybatis-spring-boot-starter, MyBatis
druid-spring-boot-starter, 阿里的數據庫連接池,也有一些替代品
any else nosql client related: mongodb, cassandra, ...
- test
spring-boot-starter-test, Spring Boot for Unit Test
- util
lombok
commons-lang3, Apache language toolkit
commons-io, Apache IO Toolkit
commons-codec, Apache Toolkit such as encryption and decryption
commons-collections4, Apache collections toolkit
hutool-all, Hutool是一个Java工具包,也只是一个工具包
- monitor and debug
spring-boot-starter-actuator, Spring Boot for Application Metrics
spring-boot-admin, Admin UI for Administration of Spring Boot Applications
spring-boot-devtools, Spring Boot for Dev Tools (Hot Reload)
- documentation
springfox-swagger2, Swagger Document
- Spring Cloud Family
基本上就是 Netflix Solution 的封裝,所以我不一一列出來,不過大陸那邊愛用 Dubbo。不過有一些東西 Spring 自己已經重寫,例如 Spring Cloud Gateway (Zuul 2 已死)
- Cloud Service Library Related
這個我也不一一列了,端看你使用的是哪一家雲端服務,AWS, GCP, AZURE, ...
後記
有些東西並沒有寫出來,但時至今日也許還有些人在使用。例如 hibernate-validator。
這也跟這幾年開源框架影響 Java 本體有關係,許多好的特性或概念多半會透過 JSR 提案然後最後在 Java 實作出來。
例如這個 hibernate-validator,是 JSR303。現在可以直接用 javax.validation.* 的類別。
所以 Java 這幾年也是有在進步的,但進步的各有好壞,這就先不談論了。
其實我本來想寫 Java 各個版本的演進,但我發現實在太龐大了,寫到一半發現會寫個沒完 (笑)
而且會使主題也過度偏向 Java,只好有機會再說了 (飄走)
About Me
Jian-Min Huang
wide range skill set backend engineer
Research, Architecture, Coding, DB, Ops, Infra.
mainly write Java but also ❤️ Scala, Kotlin and Go