接上篇
服務(wù)提供
現(xiàn)在我們搭建一個(gè)簡(jiǎn)單的服務(wù)洋机,訪問(wèn) /hello 并傳入?yún)?shù) 返回 “hello xxx” 字符串衔肢。
先建一個(gè)boot工程添加如下依賴
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Edgware.RELEASE</spring-cloud.version>
</properties>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
配置文件
spring.application.name=spring-cloud-producer
server.port=8085
eureka.client.serviceUrl.defaultZone=http://localhost:8080/eureka/
spring.application.name
服務(wù)名
server.port
該應(yīng)用端口號(hào)
eureka.client.serviceUrl.defaultZone
服務(wù)中心地址
在啟動(dòng)類(lèi)前加上@EnableDiscoveryClient
注解
@SpringBootApplication
@EnableDiscoveryClient
public class ProducerApplication {
public static void main(String[] args) {
SpringApplication.run(ProducerApplication.class, args);
}
}
現(xiàn)在我們實(shí)現(xiàn)服務(wù)。
@RestController
public class HelloController {
@GetMapping("/hello")
public Object hello(@RequestParam String name){
return "hello " + name;
}
}
服務(wù)調(diào)用
先建一個(gè)Boot項(xiàng)目,依賴和服務(wù)提供者相同。
配置文件
spring.application.name=spring-cloud-consumer
server.port=8085
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/
在啟動(dòng)類(lèi)前加上 @EnableDiscoveryClient 和@EnableFeignClients
注解
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}
調(diào)用hello的接口
@FeignClient(name = "spring-cloud-producer")
public interface HelloRemote {
@GetMapping("/hello")
String hello(@RequestParam(name = "name") String name);
}
控制器
@RestController
public class HelloController {
@Autowired
HelloRemote helloRemote;
@GetMapping("/hello/{name}")
public Object hello(@PathVariable(name = "name") String name){
return helloRemote.hello(name);
}
}