SpringCloud 模块间调用
在Spring Cloud中,模块间调用通常使用Feign客户端或者Ribbon直接调用。以下是使用Feign客户端的一个简单示例。
- 定义一个服务提供者(Provider),提供API接口。
@RestController
public class MyController {
@GetMapping("/data")
public String getData() {
return "Hello from provider";
}
}
- 在服务消费者(Consumer)中定义一个Feign客户端接口。
@FeignClient("provider-service-name")
public interface ProviderClient {
@GetMapping("/data")
String getData();
}
- 在消费者的应用主类或配置类中添加
@EnableFeignClients
注解。
@SpringBootApplication
@EnableFeignClients(basePackages = "com.example.consumer.clients")
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}
- 在消费者的服务中使用Feign客户端。
@Service
public class ConsumerService {
@Autowired
private ProviderClient providerClient;
public String callProvider() {
return providerClient.getData();
}
}
确保服务提供者已经注册到服务发现组件(如Eureka、Consul),并且消费者的application.properties
或application.yml
中配置了服务发现组件的地址,以及Feign的相关配置。
以上示例假设你已经有Spring Cloud的基础知识,并且配置了服务发现机制(Eureka、Consul等)。如果你的项目中没有使用这些服务发现组件,你可以直接通过Ribbon + RestTemplate进行服务间调用,但使用Feign可以使得服务调用更加简洁和声明式。
评论已关闭