4-springcloud实现服务消费方直接调用服务提供方

服务消费方直接调用服务提供方

1、创建一个 SpringBoot 工程,并且添加 SpringBoot 的相关依赖; 

2、创建服务提供者的访问方法,也就是后续消费者如何访问提供者; 

Spring Cloud 是基于 rest 的访问,所以我们添加一个 Controller,在该

Controller 中提供一个访问入口:

服务提供方代码:

controller:

@RestController
public class GoodsController {
@Autowired
private GoodsService goodsService;
@GetMapping("/notFound")
public String notFound() {
return " this is demo - notFound -new-2 ";
}
@GetMapping("/getUser")
public ResultObject getUser() {
TblSysuserInfo user = goodsService.getGoodsName();
return new ResultObject(0000, "查询成功", user);
}
}

service:

@Service
public class GoodsServiceImpl implements GoodsService{
@Autowired
TblSysuserInfoMapper tblSysuserInfoMapper;
public TblSysuserInfo getGoodsName() {
return tblSysuserInfoMapper.selectByPrimaryKey("1001");
}
}
@SpringBootApplication
@EnableDiscoveryClient //开启服务注册与发现功能
@MapperScan("com.example.springboot.dao.user.mapper")
public class Demo1ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(Demo1ProviderApplication.class, args);
System.out.println("---------------start success---------------");
}
}

服务消费方代码:

controller:

@RestController
public class GoodsController {
@Autowired
RestTemplate restTemplate;
@Autowired
private GoodsFeignService goodsFeignService;
@GetMapping("/notFound-feign")
public String notFound() {
return goodsFeignService.notFound();
}
@RequestMapping("/cloud/goods")
public ResultObject goods(Model model) {
//调用远程的一个controller, restful的调用
ResponseEntity<ResultObject> responseEntity = restTemplate.getForEntity("http://localhost:8089/getUser", ResultObject.class);
return responseEntity.getBody();
}
}

service:

@SpringBootApplication
@EnableDiscoveryClient //开启服务注册与发现功能
@EnableFeignClients
//@EnableFeignClients(basePackageClasses= GoodsFeignService.class) //开启feign
/**
* 如果消费者的启动类的包是
*
* com.xxx.business,你的feign接口定义包应该是com.xxx.business.feign或com.xxx.business.service,反正一定要在
*
* com.xxx.business这个路径下面,feign才能成功被注入。
*/
public class Demo1ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(Demo1ConsumerApplication.class, args);
System.out.println("-------consume start success------------");
}

@Bean
// @LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
}

直接调用消费端接口:返回结果

 

 

 

 

 

 


posted on 2023-04-04 15:55  companion  阅读(92)  评论(0编辑  收藏  举报