一、未做處理之前
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層調用的是同一個線程。