一、版本对应
开发工具:idea 2020.2.3
java:1.8
maven:3.3.9
SpringBoot:2.1.3.RELEASE
SpringCloud:Greenwich.SR5 (版本和SpringBoot必须对应,对应表自行百度)
二、搭建springcloud项目框架
idea配置我就不细说了
1. 直接新建成maven项目
然后next
finish
2.这个作为父类项目,不需要写代码,删除src文件夹
然后配置pom.xml:
一般在父项目配置
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
然后配置依赖,这里只是一个springboot项目,所以配一个springboot就行了:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
</dependencies>
3. 新建两个子项目,也就是两个服务,一个user,一个power,服务名称根据自己需求取名
然后配置pom.xml,它们俩都是独立的springboot项目了,这里也可以和父类工程做依赖继承,但是这里就没必要,更凸显服务的独立性:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.3.RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
4. 在两个子项目中建好controller和启动类,以及yml配置类
5. 分别写好两个接口做调用测试,
5.1. power服务:
controller:
power启动类:
power配置文件application.yml:
server:
port: 6060
spring:
application:
name: server-power #服务名称
5.2 user服务
UserController.java
在这里调用另一个服务power服务的接口,可以使用reatTeplate来实现,需要配置
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.Map;
@RestController
public class UserController {
@Autowired
private RestTemplate restTemplate;
//user自己的接口
@GetMapping("user/getUser.do")
public Object getUser(){
Map<String, Object> map = new HashMap<>();
map.put("user", "value");
return map;
}
//调用power的接口
@GetMapping("user/getPower.do")
public Object getPower(){
return restTemplate.getForObject("http://server-power/power/getPower.do", Object.class);
}
}
reaTeplate配置文件:AppConfig.java
package com.fzx.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class AppConfig {
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
user服务启动类:
package com;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class AppUser {
public static void main(String[] args) {
SpringApplication.run(AppUser.class);
}
}
user服务的 application.yml
server:
port: 7070
spring:
application:
name: server-user #服务名称
同样可以以相同方式在power服务中调用user的接口
然后在浏览器:
127.0.0.1:6060/power/getPower.do(6060是power服务的端口)
127.0.0.1:7070/user/getUser.do调用自己的接口(7070是user服务的端口)
127.0.0.1:7070/user/getPower.do调用power的接口
至此实现了不同服务之间的调用