1. 概述
1.1 版本號來源
Spring Cloud 的版本號並不是我們通常見的數字版本號,而是一些很奇怪的單詞。這些單詞均爲英國倫敦地鐵站的站名。同時根據字母表的順序來對應版本時間順序,比如:最早的 Release 版本 Angel(天使),第二個 Release 版本 Brixton(英國地名),然後是 Camden、Dalston、Edgware,目前使用較多的是 Finchley(英國地名)版本,而最新版本爲 Hoxton(英國地名),本博客使用的是 Greenwich(格林威治)。
1.2 Spring Cloud 與 Spring Boot 版本
某一版本的 Spring Cloud 要求必須要運行在某一特定 Spring Boot 版本下。它們的對應關係在 Spring Cloud 官網可以看到版本對應說明。
2. 環境搭建
2.1 服務提供者
代碼已經上傳至 https://github.com/masteryourself-tutorial/tutorial-spring ,詳見
tutorial-spring-cloud/tutorial-spring-cloud-provider/tutorial-spring-cloud-provider-simple-5001
工程
2.1.1 配置文件
1. pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.4.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2.1.2 代碼
1. ProviderApplication5001
@SpringBootApplication
public class ProviderApplication5001 {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication5001.class, args);
}
}
2. ProviderController
@RestController
@RequestMapping("/provider")
public class ProviderController {
@Value("${server.port}")
private String serverPort;
@RequestMapping(value = "info")
public Map<String, String> info() {
Map<String, String> result = new HashMap<>(10);
result.put("code", "200");
result.put("serverPort", serverPort);
return result;
}
}
2.2 服務消費者
代碼已經上傳至 https://github.com/masteryourself-tutorial/tutorial-spring ,詳見
tutorial-spring-cloud/tutorial-spring-cloud-provider/tutorial-spring-cloud-consumer-simple-6001
工程
2.2.1 配置文件
1. pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.4.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2.2.2 代碼
1. ConsumerApplication6001
@SpringBootApplication
public class ConsumerApplication6001 {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication6001.class, args);
}
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
2. ConsumerController
@RestController
@RequestMapping("/consumer")
public class ConsumerController {
@Autowired
private RestTemplate restTemplate;
private static final String SERVICE_PROVIDER = "http://localhost:5001/";
@RequestMapping("/info")
public Map<String, String> info() {
String url = SERVICE_PROVIDER + "provider/info";
return restTemplate.exchange(url, HttpMethod.GET, null, new ParameterizedTypeReference<Map<String, String>>() {
}).getBody();
}
}