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; }}
創(chuàng)建的類實現HandlerMethodArgumentResolver后,發(fā)現在里面注入bean實例都失效了,向上面的redisTemplate實例在運行的時候就為null,同一個包下其他的class都是正常。請問是什么原因導致bean的注入失敗。
問題解答
回答1:你使用的UserArgumentResolver對象沒有被IoC容器管理, 因為在@Autowired注解沒有配置required=false的情況下spring發(fā)現沒有該對象會直接拋出Exception, 不會出現注入null的情況.
回答2:HandlerMethodArgumentResolver接口應該是被spring實例化的,不是IOC容器實例化管理的
相關文章:
1. node.js - win7下,npm 無法下載依賴包,淘寶鏡像也裝不上,求幫忙???2. 為什么autoloader.php文件能知道 $className 代表test3. javascript - dropload+tab頁面,圖文頁滾動有兩個滾動區(qū)域怎么破?4. 推薦好用mysql管理工具?for mac和pc5. 為什么學習PHP6. Python中使用超長的List導致內存占用過大7. javascript - vue項目里的package.json8. pdo - mysql 簡單注入疑問9. javascript - axios請求回來的數據組件無法進行綁定渲染10. python - 如何用pandas處理分鐘數據變成小時線?
