服務提供
我們假設服務提供者有一個hello方法,可以根據傳入的參數,提供輸出“hello xxx,this is first messge”的服務
1、pom包配置
創建一個springboot項目,pom.xml中添加如下配置:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
2、配置文件
application.properties配置如下:
spring.application.name=spring-cloud-producer
server.port=9000
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/
參數在上一篇都已經解釋過,這裏不多說。
3、啓動類
啓動類中添加@EnableDiscoveryClient註解
@SpringBootApplication
@EnableDiscoveryClient
public class ProducerApplication {
public static void main(String[] args) {
SpringApplication.run(ProducerApplication.class, args);
}
}
4、controller
提供hello服務
@RestController
public class HelloController {
@RequestMapping("/hello")
public String index(@RequestParam String name) {
return "hello "+name+",this is first messge";
}
}
添加@EnableDiscoveryClient註解後,項目就具有了服務註冊的功能。啓動工程後,就可以在註冊中心的頁面看到SPRING-CLOUD-PRODUCER服務。
到此服務提供者配置就完成了。
服務調用
1、pom包配置
和服務提供者一致
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
2、配置文件
application.properties配置如下:
spring.application.name=spring-cloud-consumer
server.port=9001
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/
3、啓動類
啓動類添加@EnableDiscoveryClient和@EnableFeignClients註解。
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}
@EnableDiscoveryClient :啓用服務註冊與發現br/>@EnableFeignClients:啓用feign進行遠程調用
Feign是一個聲明式Web Service客戶端。使用Feign能讓編寫Web Service客戶端更加簡單, 它的使用方法是定義一個接口,然後在上面添加註解,同時也支持JAX-RS標準的註解。Feign也支持可拔插式的編碼器和×××。Spring Cloud對Feign進行了封裝,使其支持了Spring MVC標準註解和HttpMessageConverters。Feign可以與Eureka和Ribbon組合使用以支持負載均衡。
4、feign調用實現
@FeignClient(name= "spring-cloud-producer")
public interface HelloRemote {
@RequestMapping(value = "/hello")
public String hello(@RequestParam(value = "name") String name);
}
name:遠程服務名,及spring.application.name配置的名稱
此類中的方法和遠程服務中contoller中的方法名和參數需保持一致。
5、web層調用遠程服務
將HelloRemote注入到controller層,像普通方法一樣去調用即可。
@RestController
public class ConsumerController {
@Autowired
HelloRemote HelloRemote;
@RequestMapping("/hello/{name}")
public String index(@PathVariable("name") String name) {
return HelloRemote.hello(name);
}
}
到此,最簡單的一個服務註冊與調用的例子就完成了。