SpringCloud中支持两种客户端调用工具
- Rest RestTemplate
- Feign客户端工具
一、搭建Feign项目
共有eureka和member、order三个module项目,前面两个项目与前几节一样
1、pom.xml
<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.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2、yml
server:
port: 8200
spring:
application:
name: allen-order
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:8761/eureka/
3、Feign接口
// @FeignClient调用服务接口, name就是调用的服务别名
@FeignClient(name = "allen-member")
public interface OrderApiFeign {
//Feign 书写方式以SpirngMVC接口形式书写
@RequestMapping("/getMember")
public String getMember();
}
4、Controller
@RestController
public class OrderController {
@Autowired
private OrderApiFeign orderApiFeign;
@RequestMapping("/getOrder")
public String getOrder() {
String member = orderApiFeign.getMember();
return member;
}
}
5、启动类
@SpringBootApplication
@EnableFeignClients //开启Feign客户端
public class OrderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderApplication.class, args);
}
}
二、Feign客户端聚合项目
1、实体
@Data
public class UserEntity {
private String name;
private Integer age;
}
2、接口
public interface IMemberService {
@RequestMapping("/getMember")
public UserEntity getMember();
}
3、实现
@RestController
public class MemberService implements IMemberService {
@RequestMapping("/getMember")
public UserEntity getMember() {
UserEntity user = new UserEntity();
user.setName("小明");
user.setAge(20);
return user;
}
}
<dependencies>
<dependency>
<groupId>com.allen</groupId>
<artifactId>springcloud2.0-api-member-service</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
4、启动类
@SpringBootApplication
public class MemberApplication {
public static void main(String[] args) {
SpringApplication.run(MemberApplication.class, args);
}
}
5、配置文件
server:
port: 9210
spring:
application:
name: zk-member
cloud:
zookeeper:
connect-string: 127.0.0.1:2181
三、服务调用
1、pom.xml
<artifactId>springcloud2.0-api-order-service</artifactId>
<dependencies>
<dependency>
<groupId>com.allen</groupId>
<artifactId>springcloud2.0-api-member-service</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
2、接口
public interface IOrderService {
@RequestMapping("/getOrder")
public UserEntity getOrder();
}
3、impl pom.xml
<dependencies>
<dependency>
<groupId>com.allen</groupId>
<artifactId>springcloud2.0-api-order-service</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
4、 yml
server:
port: 9200
spring:
application:
name: zk-order
cloud:
zookeeper:
connect-string: 127.0.0.1:2181
5、feign
@FeignClient(name = "zk-member")
public interface OrderApiFeign extends IMemberService {
}
6、service
@RestController
public class OrderService implements IOrderService {
@Autowired
private OrderApiFeign orderApiFeign;
@RequestMapping("/getOrder")
public UserEntity getOrder() {
UserEntity user = orderApiFeign.getMember();
return user;
}
}
7、启动类
@SpringBootApplication
@EnableFeignClients
public class OrderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderApplication.class, args);
}
}