业务描述
管理员模块调用用户模块的相关信息,使用feign后,流程可看作为:
graph TD
Admin --> Feign --> User
相关代码
被调用者业务:User
前台将会传入分页信息,根据分页信息查询用户列表:
@RestController
public class RealNameClient implements WmUserClient {
@Autowired
private ApUserRealnameService apUserRealnameService;
/**
* 获取用户列表信息
* @param dto
* @return
*/
@Override
@PostMapping("/user/api/v1/auth/list")
public ResponseResult getUserList(@RequestBody WmPageDto dto) {
return apUserRealnameService.getUserList(dto);
}
}
中介转发业务:Feign
@FeignClient("leadnews-user")
public interface WmUserClient {
@PostMapping("/user/api/v1/auth/list")
ResponseResult getUserList(@RequestBody WmPageDto dto);
}
需要注意的是@FeignClient("leadnews-user") 中的参数为被调用者spring.application.name的值
调用者业务:Admin
直接调用中介Feign的相关方法,而不是User的
@RequestMapping("/api/v1/auth")
@RestController
public class AuthFeign implements WmUserClient{
@Resource
private WmUserClient wmUserClient;
@PostMapping("/list")
@Override
public ResponseResult getUserList(WmPageDto dto) {
return wmUserClient.getUserList(dto);
}
}
启动类添加注解@EnableFeignClients(clients = WmUserClient.class)
@ConditionalOnNacosDiscoveryEnabled
@MapperScan("com.heima.admin.mapper")
@SpringBootApplication
@EnableFeignClients(clients = WmUserClient.class)
public class AdminApplication {
public static void main(String[] args) {
SpringApplication.run(AdminApplication.class, args);
}
}
测试
使用admin查询user信息成功
小结
feign 定义为接口,可以将调用者和被调用者implements实现对应的方法