[英]Could not autowire FeignClient in service
我有一個簡單的 API,它使用 FeignClient 調用其他 api 並獲取訪問令牌。 但是今天我不明白為什么我的客戶是空的。
你能解釋為什么在運行時,我的假客戶是 null 嗎?
@SpringBootApplication
@EnableFeignClients
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
我的控制器
@RestController
@RequestMapping("/api")
public class AppController {
private final MyService myService = new MyService();
}
我的服務
@Service
public class MyService {
@Autowired
private MyClient myClient;
public AccessToken applicationLogin(final LoginParameters loginParameters) {
return myClient.getAccessToken(loginParameters);
}
}
我的客戶
@FeignClient(name = "myClient", url = "https://myurl.com")
public interface MyClient {
@PostMapping("/auth/login")
AccessToken getAccessToken(@RequestBody LoginParameters loginParameters);
}
錯誤
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause java.lang.NullPointerException: null
您使用錯誤的變量來調用方法而不是r2aClient
您應該 ise myClient
public AccessToken applicationLogin(final LoginParameters loginParameters) {
return myClient.getAccessToken(loginParameters);
}
根據新更改進行編輯
我猜@EnableFeignClient
找不到類 MyClient,試試@EnableFeignClient(basePackages = "<your package for MyClient>)
我認為您必須在Controller
注入Service
。 您將服務創建為普通 Java 類,因此不會注入MyClient
。
@RestController
@RequestMapping("/api")
public class AppController {
@Autowired
private final MyService myService;
}
不使用
new MyService();
如果使用'new',它不會被spring管理。 你可以檢查一下
@RestController
public class MyController {
private IMyService iMyService = new MyServiceImpl();
}
@Service
public class MyServiceImpl implements IMyService {
@Autowired
private MyMapper myMapper;
//....
}
myMapper 將始終為 null.cuz 您由 new 創建它。 順便說一句,從 Spring 4 開始,不推薦現場注入
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.