Spring Boot 1.x 与 2.x 的区别
其实 Spring Boot 在一开始时,运用到的基本就是 Eureka、Config、Zuul、Ribbon、Feign、Hystrix 等。到了 Spring Boot 2.x 的时候,大量的组件开始风云崛起。下面简单列下这两个版本之间的区别如下。
Spring Boot 1.x 中,session 的超时时间是这样的:
server.session.timeout=3600
复制代码
而在 2.x 中:
server.servlet.session.timeout=PT120M
复制代码
截然不同的写法,cookie 也是一样的:
server:
servlet:
session:
timeout: PT120M
cookie:
name: ORDER-SERVICE-SESSIONID
复制代码
-
应用的 ContextPath 配置属性改动,跟上面的 session 一样,加上了一个 servlet。
-
Spring Boot 2.x 基于 Spring 5,而 Spring Boot 1.x 基于 Spring 4 或较低。
-
统一错误处理的基类 AbstarctErrorController 的改动。
-
配置文件的中文可以直接读取,不需要转码。
-
Acutator 变化很大,默认情况不再启用所有监控,需要定制化编写监控信息,完全需要重写,HealthIndicator,EndPoint 同理。
-
从 Spring Boot 2.x 开始,可以与 K8s 结合来实现服务的配置管理、负载均衡等,这是与 1.x 所不同的。
K8s 的一些资源的介绍
上面说到 Spring Boot 2.x 可以结合 K8s 来作为微服务的架构设计,那么就先来说下 K8s 的一些组件吧。
ConfigMap,看到这个名字可以理解:它是用于保存配置信息的键值对,可以用来保存单个属性,也可以保存配置文件。对于一些非敏感的信息,比如应用的配置信息,则可以使用 ConfigMap。
创建一个 ConfigMap 有多种方式如下。
1. key-value 字符串创建
kubectl create configmap test-config --from-literal=baseDir=/usr
复制代码
上面的命令创建了一个名为 test-config,拥有一条 key 为 baseDir,value 为 "/usr" 的键值对数据。
2. 根据 yml 描述文件创建
apiVersion: v1
kind: ConfigMap
metadata:
name: test-config
data:
baseDir: /usr
复制代码
也可以这样,创建一个 yml 文件,选择不同的环境配置不同的信息:
kind: ConfigMap
apiVersion: v1
metadata:
name: cas-server
data:
application.yaml: |-
greeting:
message: Say Hello to the World
---
spring: