接上一篇:Spring cloud微服务搭建(三)—— Spring cloud服务提供方
编写Spring cloud 消费方,在父项目下新建module,选择普通的maven项目。
1、Maven依赖
springcloud-api
:pojo实体类所在jar包spring-boot-starter-web
:web应用spring-boot-devtools
:支持热部署
<!--需要引入实体类和web-->
<dependencies>
<dependency>
<groupId>zuka</groupId>
<artifactId>springcloud-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
2、application.yaml
只需设置消费方服务端口,若为80端口,可以在url中省略端口号。
server:
port: 80
3、Config配置类
@Configuration
:表示为一个配置类
RestTemplate
:是一个 HTTP 请求工具。默认没有注入为容器中的bean,因此需要手动java config为bean。
@Configuration
public class Config {
@Bean
public RestTemplate RestTemplate(){
return new RestTemplate();
}
}
4、控制器Controller
- 重要属性
RestTemplate
:使用RESTful风格url向服务方发起请求,并获取响应结果。postForObject(String url,实体类,返回类型.class)
:通过post方式请求服务提供方- url:远程服务方controller中目标方法在
RequestMapping
中的url - 返回类型.class:远程服务方controller中,url映射到目标方法的返回类型
- url:远程服务方controller中目标方法在
getForObject(String url,返回类型.class)
:通过get方式请求服务提供方
- 通过
RestTemplate
,实现了Spring cloud中微服务之间的互相调用。
//消费方没有service层级。
@RestController
public class DeptController {
@Autowired
private RestTemplate restTemplate;
private static final String REST_URL_PREFIX="http://localhost:8001";
@RequestMapping("/consumer/dept/add/{deptName}")
public boolean addDept(@PathVariable("deptName") String deptName){
return restTemplate.postForObject(REST_URL_PREFIX+"/dept/add", new Department(deptName), Boolean.class);
}
@RequestMapping("/consumer/dept/get/{id}")
public Department queryById(@PathVariable("id") int id){
return restTemplate.getForObject(REST_URL_PREFIX+"/dept/get/"+id, Department.class);
}
@RequestMapping("/consumer/dept/list")
public List<Department> queryAll(){
return restTemplate.getForObject(REST_URL_PREFIX+"/dept/list", List.class);
}
}
5、启动类
@SpringBootApplication
public class DeptConsumer_80 {
public static void main(String[] args) {
SpringApplication.run(DeptConsumer_80.class,args);
}
}
6、测试执行
在浏览器输入:http://localhost/consumer/dept/list,返回页面如下:
更多:
Spring cloud开发环境搭建(一)——maven依赖