项目地址: 链接:https://pan.baidu.com/s/1Mxo0ltvZbpz_r8mCU-mSpw
提取码:3j4a
1.Feight声明式客户端工具调用调用
1.新建order项目 pom.xml ,order调用member服务 , member服务为正常服务,这里不粘贴了
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.zhang</groupId>
<artifactId>order</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>order</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
<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>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2. 新建接口 FeignAPI调用接口 , 编写调用member服务的接口, 此处请求地址和方法,皆和member服务Controller接口请求 地址请求方法一致
@FeignClient(name = "member") //@FeignClient 调用服务接口 name 就是被调用的服务名称
public interface FeightAPI {
//Feign 书写方式以springMVC接口形式书写
@GetMapping("/getMember")
public String getMember();
}
3. 新建Controller类,注入FeignAPI ,调用接口
@RestController
public class FeignController {
@Autowired
private FeightAPI feightAPI;
//Feign调用
@GetMapping("/feignToMember")
public String feignToMember(){
return feightAPI.getMember();
}
}
4.启动类开启Feign客户端注解
@SpringBootApplication
@EnableEurekaClient //开启Eureka客户端
@EnableFeignClients //开启Feign客户单调用
public class OrderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderApplication.class, args);
}
}
5.访问接口,调用成功

2.RestTemplate调用
注意:需要@bean初始化RestTemplate对象 ,默认为负载均衡,故初始化需要加@LoadBalanced
初始化RestTemplate对象示例:
@Bean @LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
调用方式示例: String memberUrl="http://app-itmayi-member/getMember"; //http"//+服务名/+请求地址
restTemplate.getForObject(memberUrl,String.class); //请求地址 , 返回类型
1.初始化RestTemplat对象
@Bean
@LoadBalanced //客户端负载均衡
RestTemplate restTemplate(){
return new RestTemplate();
}
2.注入RestTemplate ,调用member服务
@Autowired
private RestTemplate restTemplate;
//RestTemplate 调用
@GetMapping("/restToMember")
public String restToMember(){
String memberUrl="http://member/getMember"; //http"//+服务名/+请求地址
return restTemplate.getForObject(memberUrl,String.class); //请求地址 , 返回类型
}
@Bean
@LoadBalanced//客户端负载均衡
RestTemplate restTemplate(){
return new RestTemplate();
}
3.访问接口,调用成功