@
前言
大家好,距離上周發布的配置中心基礎使用已過去差不多一周啦,趁着周末繼續完善后續SpringCloud組件的集成,本次代碼基於配置中心代碼的基礎上進行集成。
SpringCloud Config 文章
SpringCloud Config demo01
項目版本
spring-boot-version:2.2.5.RELEASE
spring-cloud.version:Hoxton.SR3
Eureka服務端
首先構建Eureka服務端項目,最近阿里雲開放了自己的項目快速構建平台,那這次就使用下吧。Alibaba initializr 操作基本上和Spirng官方提供的一模一樣。搜索並選擇eureka server即可。
pom主要信息
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
application.properties
# 服務應用名
spring.application.name=eureka-server
# 服務端口
server.port=9003
# 禁止將本服務注冊至eureka
eureka.client.register-with-eureka=false
# 屏蔽注冊信息
eureka.client.fetch-registry=false
# eureka服務地址
eureka.client.serviceUrl.defaultZone=http://localhost:9003/eureka/
EurekaServerApplication.java
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
@EnableEurekaServer 申明注解此應用為eureka服務端
項目啟動成功后訪問 http://localhost:9003/,即可看到Eureka服務后台
Eureka客戶端
客戶端代碼基於上篇SpringCloud配置中心(Config)使用說明,文章地址及代碼見本文開頭,這邊主要說明一些調整的地方。
先調整spring-cloud-config-server項目,我們需要將其注冊至Eureka服務上,調整如下
1.pom文件
增加eureka客戶端相關依賴
<!--eureka客戶端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2.application.properties
配置文件增加以下配置項
# eureka服務端地址
eureka.client.serviceUrl.defaultZone=http://localhost:9003/eureka/
3.ConfigServerApplication.java
增加@EnableDiscoveryClient注解標簽
@EnableConfigServer
@SpringBootApplication
@EnableDiscoveryClient
public class ConfigServerApplication
調整完后,我們再啟動Config服務端,這時可以在Eureka服務后台看到config-server已經注冊上了,如下圖。
接着調整spring-cloud-config-client項目
1.pom文件
增加eureka客戶端相關依賴
<!--eureka客戶端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2.bootstrap.properties
將原先直接通過Config服務端地址調整為基於服務發現的配置,調整如下
# 配置服務端請求地址
#spring.cloud.config.uri=http://localhost:9001/
# 開啟服務發現
spring.cloud.config.discovery.enabled=true
# 配置Config服務應用名稱
spring.cloud.config.discovery.service-id=config-server
3.ConfigClientApplication.java
增加@EnableDiscoveryClient注解標簽
@SpringBootApplication
@EnableDiscoveryClient
public class ConfigClientApplication
啟動Config客戶端后,即可在Eureka服務后台看到服務已注冊進來。再訪問下Config 客戶端暴露的接口,http://localhost:9002/getEnv,成功獲取到配置信息。
服務訪問
前面是基於SprongCloud Config配置中心集成的Eureka,接下來將介紹下如何使用Eureka中已注冊的服務。
這邊先構建一個System模塊,用於訪問Config client提供的接口服務。
部分pom信息
<!--eureka客戶端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--服務訪問-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
application.properties
# 服務應用名稱
spring.application.name=system-server
# 服務端口
server.port=9004
# eureka服務端地址
eureka.client.serviceUrl.defaultZone=http://localhost:9003/eureka/
SystemServerApplication.java
@EnableFeignClients開啟Feign的支持
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class SystemServerApplication {
public static void main(String[] args) {
SpringApplication.run(SystemServerApplication.class, args);
}
}
ConfigService.java
@FeignClient 申明Feign客戶端信息,其中name對應應用服務提供方的應用服務名稱
@GetMapping(path = "/getEnv") 對應應用服務提供方暴露的接口地址
@FeignClient(name = "config-client")
public interface ConfigService {
@GetMapping(path = "/getEnv")
String getEnvName();
}
SystemController.java
@RestController
@RequestMapping(value = "/web/system")
public class SystemController {
@Autowired
ConfigService configService;
@RequestMapping(value = "/getEnvName", method = RequestMethod.GET)
public String getEnvName() {
return configService.getEnvName();
}
}
啟動系統服務模塊后,訪問 http://localhost:9004/web/system/getEnvName 即可訪問到信息,如下圖
訪問返回結果和訪問 http://localhost:9002/getEnv 接口返回是一樣的,僅僅只是通過Feign訪問了下 http://localhost:9002/getEnv,內部是基於通過注冊在Eureka上的config-client服務調用得到的結果,內部服務地址 http://config-client/getEnv
項目代碼結構如下