javascript
spring boot pom配置_125 SpringCloud服务配置中心
1. 為什么需要使用配置中心
(1) 常用的配置管理解決方案有哪些缺點?
硬編碼:需要修改代碼的話繁瑣且風險大;
配置寫在properties里面,在集群環境下,需要替換和重啟;
寫在xml文件中,一般和應用一起打包,替換時需要重新打包和重啟。
(2) 為什么要使用Spring Cloud Config 配置中心?
由于常用的配置管理有很大的缺點,故Spring Cloud Config采用了集中式的配置中心來管理每個服務的配置信息。Spring cloud config配置中心,在微服務分布式系統中,采用了服務端和客戶端來提供可擴展的配置服務。配置中心負責管理所有的服務的各種環境配置文件。配置服務中心采用Git的方式存儲配置文件,因此我們很容易部署修改,又處于對環境進行版本管理。
(3) Spring Cloud Config 配置中心解決了什么問題?
Spring clound config它解決了微服務配置的中心化、版本控制、平臺獨立、語言獨立等問題。其特性如下:
提供服務端和客戶端支持,Spring cloud config server和spring cloud config client;
集中式管理分布式環境系的應用配置;
基于Spring環境,無縫與spring應用集成;
可用于任何語言開發的程序;
默認實現基于git倉庫,可以進行版本管理。
2. 配置文件的命名規則與訪問規則
(1) @EnableConfigServer注解的作用是什么?
加在啟動類上,表明該服務是配置服務器,用于統一管理配置文件。
(2) 使用配置中心時,配置文件命名規則與訪問規則是什么?
3. 編寫配置中心客戶端
(1) 配置中心客戶端中的配置文件命名有什么要求?
修改配置文件的名稱??蛻舳伺渲梦募Q必須為bootstrap.properties
4. 配置中心原理講解
(1) 配置中心的原理是什么?
5. 在git端修改配置后,在不重啟服務中如何讓客戶端生效
(1) @RefreshScope注解的作用是什么?
需要對讀取配置文件的 Bean 對象做作用域刷新
@RestController @RefreshScope //刷新作用域 public class ConfigController { @Value("${e-book}") private String msg; @RequestMapping("/showMsg") public String showMsg(){ return this.msg; } }6. 在配置中心服務端開啟對稱加密
(1) 什么是對稱加密?
對稱加密是最快速、最簡單的一種加密方式,加密(encryption)與解密(decryption)用的是同樣的密鑰(secret key)。
(2) 設置加密環境需要哪些步驟?
1-設置秘鑰 KEY:
在server端的配置文件中添加配置encrypt.key=lucas
2-未配置 JCE:
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
下載解壓后,把 jar 文件上傳到需要安裝 jce 機器上 JDK 或 JRE 的 security 目錄下,覆蓋源文件即可。
JDK:將兩個 jar 文件放到%JDK_HOME%jrelibsecurity 下
JRE:將兩個 jar 文件放到%JRE_HOME%libsecurity 下
3-spring cloud bug
Dalston.SR4、Dalston.SR3、Dalston.SR2 版本不能對配置文件加密,若需要調整到 Dalston.SR1
https://github.com/spring-cloud/spring-cloud-config/issues/767
加密演示
加密(post 請求):http://127.0.0.1:9030/encrypt
解密(post 請求):http://127.0.0.1:9030/decrypt
7. 客戶端服務通過服務端獲取加密后的配置信息
(1) 創建配置中心客戶端。
(2) 修改POM文件,添加相關坐標。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.bjsxt</groupId> <artifactId>config-e-book-product-provider</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.13.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEn coding> <project.reporting.outputEncoding>UTF-8</project.reporting. outputEncoding> <java.version>1.8</java.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.SR5</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <!-- 添加 product-service 坐標 --> <dependency> <groupId>com.bjsxt</groupId> <artifactId>e-book-product-service</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>(3) 修改POM文件,添加配置中心客戶端坐標。
<dependency> <groupId>com.bjsxt</groupId> <artifactId>e-book-product-service</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>(4) 修改配置文件,添加服務相關配置。
spring.application.name=config-e-book-product-provider server.port=9001 #設置服務注冊中心地址,指向另一個注冊中心 eureka.client.serviceUrl.defaultZone=http://user:123456@eur eka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/(5) 修改配置文件,添加配置中心相關配置。
#配置中心服務端的鏈接信息 #默認 false,這里設置 true,表示開啟讀取配置中心的配置 spring.cloud.config.discovery.enabled=true #對應 eureka 中的配置中心 serviceId,默認是 configserver spring.cloud.config.discovery.serviceId=config-server-encry ption-sym #git 標簽 spring.cloud.config.label=master(6) 測試通過訪問配置中心客戶端獲取配置內容。
8. 什么是非對稱加密
(1) 什么是非對稱加密?
加密和解密使用的是兩個不同的密鑰,這種加密方法就叫非對稱加密。
(2) 對稱加密與非對稱加密有何區別?
9. java-keytool證書-使用說明
(1) 什么是java-keytool?
Java keytool是密鑰和證書管理工具。它使用戶能夠管理自己的公鑰/私鑰對及相關證書,用于(通過數字簽名)自我認證(用戶向別的用戶/服務認證自己)或數據完整性以及認證服務。它還允許用戶儲存他們的通信對等者的公鑰(以證書形式)。
(2) 如何使用java-keytool生成秘鑰?
切換目錄至jdk安裝目錄的bin目錄下,然后執行命令
10. 配置中心使用非對稱加密算法對配置信息進行加密解密處理
(1) 創建配置中心服務端。
(2) 修改POM文件,添加相關坐標。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.bjsxt</groupId> <artifactId>config-server-rsa</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springcloud-eureka-consumer</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.13.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEn coding> <project.reporting.outputEncoding>UTF-8</project.reporting. outputEncoding> <java.version>1.8</java.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.SR1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>(3) 修改POM文件,添加配置中心服務端坐標。
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency>(4)修改配置文件,添加服務相關配置。
spring.application.name=config-server-rsa server.port=9050 #設置服務注冊中心地址,指向另一個注冊中心 eureka.client.serviceUrl.defaultZone=http://user:123456@eur eka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/ #Git 配置 spring.cloud.config.server.git.uri=https://gitee.com/oldlu_ wk/config #spring.cloud.config.server.git.username= #spring.cloud.config.server.git.password=(5) 修改配置文件,添加秘鑰相關配置。
#keytool -genkeypair -alias "config-info" -keyalg "RSA" -keystore "encrypt-info.keystore" # keystore 文件的路徑 encrypt.key-store.location=classpath:encrypt-info.keystore # alias 指定密鑰對的別名,該別名是公開的; encrypt.key-store.alias=config-info # storepass 密鑰倉庫 encrypt.key-store.password=oldlu123 # keypass 用來保護所生成密鑰對中的私鑰 encrypt.key-store.secret=oldlu456(6) 通過keytool工具創建密鑰文件。
(7) 訪問配置中心服務端測試結果。
(8) 創建配置中心客戶端。
(9) 修改POM文件,添加相關坐標。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.bjsxt</groupId> <artifactId>config-product-provider-rsa</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.13.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEn coding> <project.reporting.outputEncoding>UTF-8</project.reporting. outputEncoding> <java.version>1.8</java.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.SR5</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <!-- 添加 product-service 坐標 --> <dependency> <groupId>com.bjsxt</groupId> <artifactId>e-book-product-service</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>(10) 修改POM文件,添加配置中心客戶端坐標。
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency>(11) 修改配置文件,添加服務相關配置。
spring.application.name=config-product-provider-rsa server.port=9001 #設置服務注冊中心地址,指向另一個注冊中心 eureka.client.serviceUrl.defaultZone=http://user:123456@eur eka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/(12) 修改配置文件,添加配置中心相關配置。
#配置中心服務端的鏈接信息 #默認 false,這里設置 true,表示開啟讀取配置中心的配置 spring.cloud.config.discovery.enabled=true #對應 eureka 中的配置中心 serviceId,默認是 configserver spring.cloud.config.discovery.serviceId=config-server-rsa #git 標簽 spring.cloud.config.label=master(13) 使用httpUtilClient工具生成加密信息。
(14) 在git的遠程倉庫中創建配置文件。
config-product-provider-rsa.properties #--------------db---------------- mybatis.type-aliases-package=com.book.product.pojo mybatis.mapper-locations=classpath:com/book/product/mapper/*.xml spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/book-product?useUnicode=true&c haracterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull spring.datasource.username={cipher}AQBdUaIQc5dxL6Px2qQ9cs8DHJ9EkUD2VaAEaGrxiK5y2 RKsOJtwL8YozHVeW8bY+A5tdkYNp0wJDYWlCASu2/aNLfSUmzk4yyOKZAUMhrDLcFasRDXQCFE3Eq7JqjPu 2hl1AeplZAxl61xFvaJPKzve5/5lXN/gfxT7q41pahb1rzpkZEpqmRAn4+aLfrbamFnYgU/f9s1AsRoRTVr jzxBPe98+VtSbyNAujU8eIf+3ZEVYwDOHOEhFxNUERSBHk/CPrbCBjoU7AygqKC6/dmexwuX/KxQpXUYzh7 1JPlVhW7LDgCuMs2W//nHdoWSlGmmOy6UZqxzlmg29ktdiRbJJ+LbY6ToDosAe9tfG9cWa1lj9odBwP1bea 7VdqK1w4jM= spring.datasource.password={cipher}AQBdUaIQc5dxL6Px2qQ9cs8DHJ9EkUD2VaAEaGrxiK5y2 RKsOJtwL8YozHVeW8bY+A5tdkYNp0wJDYWlCASu2/aNLfSUmzk4yyOKZAUMhrDLcFasRDXQCFE3Eq7JqjPu 2hl1AeplZAxl61xFvaJPKzve5/5lXN/gfxT7q41pahb1rzpkZEpqmRAn4+aLfrbamFnYgU/f9s1AsRoRTVr jzxBPe98+VtSbyNAujU8eIf+3ZEVYwDOHOEhFxNUERSBHk/CPrbCBjoU7AygqKC6/dmexwuX/KxQpXUYzh7 1JPlVhW7LDgCuMs2W//nHdoWSlGmmOy6UZqxzlmg29ktdiRbJJ+LbY6ToDosAe9tfG9cWa1lj9odBwP1bea 7VdqK1w4jM=(15) 測試配置中心服務端。
(16) 訪問客戶端服務測試配置信息是否可用。
11. 配置中心的用戶安全認證
(1) 為什么需要開啟配置中心的安全認證?
防止外部請求直接訪問我們的服務,拒絕不合理請求。
12. 什么是Spring Cloud Bus
(1) 什么是Spring Cloud Bus?
14. 采用bus實現自動刷新配置信息-Client刷新
(1) 創建配置中心客戶端項目。
(2) 修改POM文件,添加相關坐標。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.bjsxt</groupId> <artifactId>config-client-refresh-bus</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springcloud-eureka-consumer</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.13.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEn coding> <project.reporting.outputEncoding>UTF-8</project.reporting. outputEncoding> <java.version>1.8</java.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.SR5</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>(3) 修改POM文件,添加Bus amqp啟動器坐標
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency>(4) 修改配置文件,添加服務相關配置。
spring.application.name=config-client server.port=9051 #設置服務注冊中心地址,指向另一個注冊中心 eureka.client.serviceUrl.defaultZone=http://user:123456@eur eka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/ #默認 false,這里設置 true,表示開啟讀取配置中心的配置 spring.cloud.config.discovery.enabled=true #對應 eureka 中的配置中心 serviceId,默認是 configserver spring.cloud.config.discovery.serviceId=config-server #指定環境 spring.cloud.config.profile=dev #git 標簽 spring.cloud.config.label=master #springboot 默認開啟了權限攔截 會導致 /refresh 出現 401,拒絕訪問 management.security.enabled=false(5) 修改配置文件,添加消息隊列連接配置。
#消息隊列的鏈接配置 spring.rabbitmq.host=192.168.70.139 spring.rabbitmq.port=5672 spring.rabbitmq.username=oldlu spring.rabbitmq.password=123456 spring.rabbitmq.virtualHost=/(6) 訪問刷新服務URL,查看測試結果。
14. 采用bus實現自動刷新配置信息-Server刷新
(1) 創建配置中心服務端項目。
(2) 修改POM文件,添加相關坐標。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.bjsxt</groupId> <artifactId>config-server-bus</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springcloud-eureka-consumer</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.13.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEn coding> <project.reporting.outputEncoding>UTF-8</project.reporting. outputEncoding> <java.version>1.8</java.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.SR5</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>(3) 修改POM文件,添加Bus amqp啟動器坐標
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency>(4) 修改配置文件,添加服務相關配置。
spring.application.name=config-server server.port=9050 #設置服務注冊中心地址,指向另一個注冊中心 eureka.client.serviceUrl.defaultZone=http://user:123456@eur eka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/ #Git 配置 spring.cloud.config.server.git.uri=https://gitee.com/oldlu_ wk/config #spring.cloud.config.server.git.username= #spring.cloud.config.server.git.password=(5) 修改配置文件,添加消息隊列連接配置。
#springboot 默認開啟了權限攔截 會導致 /refresh 出現 401,拒絕訪 問 management.security.enabled=false spring.rabbitmq.host=192.168.70.139 spring.rabbitmq.port=5672 spring.rabbitmq.username=oldlu spring.rabbitmq.password=123456 spring.rabbitmq.virtualHost=/(6) 訪問刷新服務URL,查看測試結果。
總結
以上是生活随笔為你收集整理的spring boot pom配置_125 SpringCloud服务配置中心的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python histo 改变 bins
- 下一篇: python标识符和关键字_Python