java - spring 注入為null問題
問題描述
如圖:
@Componentpublic class UserArgumentResolver implements HandlerMethodArgumentResolver{ @Autowired private RedisTemplate<String,User> redisTemplate; @Override public boolean supportsParameter(MethodParameter parameter) {if(parameter.getParameterAnnotation(CurrentUser.class)!=null&& parameter.getParameterType()==User.class){ return true;}return false; } @Override public Object resolveArgument(MethodParameter methodParameter, ModelAndViewContainer modelAndViewContainer, NativeWebRequest webRequest, WebDataBinderFactory webDataBinderFactory) throws Exception {HttpServletRequest request= (HttpServletRequest) webRequest.getNativeRequest(); // todoreturn null; }}
創建的類實現HandlerMethodArgumentResolver后,發現在里面注入bean實例都失效了,向上面的redisTemplate實例在運行的時候就為null,同一個包下其他的class都是正常。請問是什么原因導致bean的注入失敗。
問題解答
回答1:你使用的UserArgumentResolver對象沒有被IoC容器管理, 因為在@Autowired注解沒有配置required=false的情況下spring發現沒有該對象會直接拋出Exception, 不會出現注入null的情況.
回答2:HandlerMethodArgumentResolver接口應該是被spring實例化的,不是IOC容器實例化管理的
相關文章:
1. mysql - 記得以前在哪里看過一個估算時間的網站2. Span標簽3. Docker for Mac 創建的dnsmasq容器連不上/不工作的問題4. javascript - 能否讓vue-cli的express修改express重啟服務5. docker images顯示的鏡像過多,狗眼被亮瞎了,怎么辦?6. javascript - 前端開發 本地靜態文件頻繁修改,預覽時的緩存怎么解決?7. docker不顯示端口映射呢?8. angular.js - angularjs如何傳遞id給另一個視圖 根據id獲取json數據?9. 請教各位大佬,瀏覽器點 提交實例為什么沒有反應10. dockerfile - 我用docker build的時候出現下邊問題 麻煩幫我看一下
