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. 運行python程序時出現“應用程序發生異常”的內存錯誤?2. macos - 無法source activate python273. javascript - 打算寫一個c++的node圖像處理模塊,有沒有推薦的c++圖片處理庫?4. android - Genymotion 模擬器可以做屏幕適配檢測嗎?5. java - butterknife怎么綁定多個view6. html - vue里面:src在IE(9-11)下不顯示圖片7. html5 - 前端面試碰到了一個緩存數據的問題,來論壇上請教一下8. PHPExcel表格導入數據庫怎么導入9. css - 移動端 盒子內加overflow-y:scroll后 字體會變大10. html - 非微信官方網頁,將由微信轉換為手機預覽模式

網公網安備