一、basic
1.导入依赖
<!--引入web依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--引⼊服务的注册和发现依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>2.写配置文件yaml
注册服务,项目名称,端口号
3.访问微服务
public class ProvideServiceImpl implements ProvideService {
//发现
@Resource
private DiscoveryClient discoveryClient;
@Resource
private RestTemplate restTemplate;
@Override
public JsonResult a() {
List<ServiceInstance> instances = discoveryClient.getInstances("example-provide");
log.info("提供者路径:{}", instances);//微服务项目地址
ServiceInstance serviceInstance = instances.get(0);
log.info("实例路径:{}", serviceInstance);//微服务项目实例地址
URI uri = serviceInstance.getUri();//微服务项目实例访问路径
log.info("uri:{}", uri);
String url = uri.toString() + "/provide/a";
JsonResult result = restTemplate.getForObject(url, JsonResult.class);
return result;
}注意:RestTemplate需要手动交给spring管理,再启动类中加入
二、ribbon方式访问
1.导依赖
<!-- 负载均衡 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>2.写配置文件yaml
注册服务,项目名称,端口号
3.访问微服务
public class ConsumerRibbonServiceImpl implements ConsumerRibbonService {
@Resource
private RestTemplate restTemplate;
@Override
public JsonResult a() {
String uri = "http://example-provide/provide/a";
return restTemplate.getForObject(uri, JsonResult.class);
}注意:RestTemplate需要手动交给spring管理,再启动类中加入,ribbon方式需要开启负载均衡,使用@LoadBalanced注解。
三、Feign方式访问
1.导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--注册和发现依赖 服务治理相关依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<!--引⼊openfeign依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>2.写配置文件yaml
注册服务,项目名称,端口号
3.访问微服务
(1)启动类
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ExampleConsumerFeignApplication {
public static void main(String[] args) {
SpringApplication.run(ExampleConsumerFeignApplication.class, args);
}
}(2)feigen类
@FeignClient("微服务项目名")
public interface ProvideFeign {
@GetMapping("实际访问路径")
JsonResult a();
}(3)访问其他微服务
@RestController
@RequestMapping("/consumer_feign")
public class ConsumerFeignController {
@Resource
private ProvideFeign provideFeign;
@GetMapping("/a")
public JsonResult a(){
return provideFeign.a();
}
}