@EnableFeignClients和@FeignClient 使用详情

一、@EnableFeignClients

一般在spring cloud项目中,我们会用到 feign 去远程调用,实现多模块之间的服务调用。一般定义一个feign接口我们需要做一下四件事情。

1. 使用注解@EnableFeignClients启用feign客户端;扫描和注册feign客户端bean定义

 @EnableFeignClients注解中的basePackges属性中是一个数组,可以填写多个值,其主要作用是指定当前模块中需要用到那些地址下的feign接口,起到一个discovery发现feign接口的作用。

@SpringBootApplication
@ComponentScan(value = {"******"})
@MapperScan(basePackages = "******")
@EnableFeignClients(basePackages = {"com.test.*"})
public class TestServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(TestServiceApplication .class, args);   
    }

}

 2.使用@FeignClient注解,定义feign客户端,使当前类中的feign接口能被发现。

 在@FeignClient注解中,我们常用的就是contextId、value、path三个属性。

contextId:属于该类在被创建为bean时的bean名称,一般和类名一样就行了。

value:其值为该服务在nacos中定义的服务名称。

path:意思和controller层中@RequestMapping注解中的value属性类似,为该类中的访问地址添加地址前缀。

@FeignClient(contextId ="ProjectInfoClient ", value = "gumap-web-service",path="/projectInfo")
public interface ProjectInfoClient {


    @GetMapping("/getByProjectId")
    ProjectDto getByProjectId(@RequestParam("projectId")Integer projectId);

}

3.在所需类中使用@Autowired或者@Resource注解引用feign,实现远程调用。

    @Autowired   
    private ProjectInfoClient projectInfoClient;


    public void run() {

        // 这里的使用本地Java API的方式调用远程的Restful接口

        ProjectDto dto = projectInfoClient.getByProjectId(111);

        log.info("projectInfo: {}", dto);

     }

 4.在controller层中创建一个类去实现feign接口,创建feign接口的方法体就行啦。

@RestController
@RequestMapping("/projectInfo")
public class ProjectInfoController implements ProjectInfoClient {

    @Autowired
    private ProjecInfoService projectInfoService;


    @Override
    public ProjectDto getByProjectId(@RequestParam("projectId")Integer projectId) {
        ProjectDto projectDto = null;
        ProjectInfoEntity projectInfoEntity = projecInfoService.getByProjectId(projectId);
        if (projectInfoEntity != null){
            projectDto = new ProjectDto();
            BeanUtils.copyProperties(projectInfoEntity,projectDto);
        }
        return projectDto;
    }

 

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值