有關feign接口本地調用

一、未做處理之前

SDK:

@FeignClient(value = "aiways-crm")
public interface AccountService {
    @PostMapping("/crm/uic/accountService/addAccount")
    BaseResult<AccountServiceResponseModel> addAccount(@RequestBody AccountServiceRequestModel accountServiceRequestModel);
}

實現類:

@RestController
@Slf4j
public class AccountServiceImpl implements AccountService {
 @Override
 @ManagerLog
 public BaseResult<AccountServiceResponseModel> addAccount(AccountServiceRequestModel accountServiceRequestModel){
        return null;
 }

使用:controller層調用添加用戶的接口

@RestController
public class AccountController extends AbstractController {

    @Resource
    private AccountService accountService;


 @RequestMapping(value = "/crm/account/addAccount", method = RequestMethod.POST)
 public BaseResult<Integer> addAccount(@RequestBody AccountRequestModel accountRequestModel) {
        ...
       BaseResult<AccountServiceResponseModel> result = accountService.addAccount(accountServiceRequestModel);
 }

結果:從下圖可以看出,controller層和service層不是一個線程,在調用service接口的時候開啓了一個新的線程去consul上面調用服務

二、處理優化:讓controller調用service服務的時候,到spring容器裏面獲取

1、實現類:使用RestController註解的時候添加value屬性值

@RestController(value = "accountService")
@Slf4j
public class AccountServiceImpl implements AccountService {
 @Override
 @ManagerLog
 public BaseResult<AccountServiceResponseModel> addAccount(AccountServiceRequestModel accountServiceRequestModel) {
        return null;
 }

2、使用:調用service服務的時候使用name屬性指定對象,這樣會通過name的值到spring容器裏面進行尋找,這樣就不走consul了

@RestController
public class AccountController extends AbstractController {

 @Resource(name = "accountService")
    private AccountService accountService;


 @RequestMapping(value = "/crm/account/addAccount", method = RequestMethod.POST)
 public BaseResult<Integer> addAccount(@RequestBody AccountRequestModel accountRequestModel) {
        ...
       BaseResult<AccountServiceResponseModel> result = accountService.addAccount(accountServiceRequestModel);
 }

3、結果:從下面圖片可知,controller層和service層調用的是同一個線程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章