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)建的類實現(xiàn)HandlerMethodArgumentResolver后,發(fā)現(xiàn)在里面注入bean實例都失效了,向上面的redisTemplate實例在運行的時候就為null,同一個包下其他的class都是正常。請問是什么原因?qū)е耣ean的注入失敗。
問題解答
回答1:你使用的UserArgumentResolver對象沒有被IoC容器管理, 因為在@Autowired注解沒有配置required=false的情況下spring發(fā)現(xiàn)沒有該對象會直接拋出Exception, 不會出現(xiàn)注入null的情況.
回答2:HandlerMethodArgumentResolver接口應該是被spring實例化的,不是IOC容器實例化管理的
相關文章:
1. 關于docker下的nginx壓力測試2. nignx - docker內(nèi)nginx 80端口被占用3. docker-machine添加一個已有的docker主機問題4. docker鏡像push報錯5. python3.x - python連oanda的模擬交易api獲取json問題第五問6. angular.js - angular內(nèi)容過長展開收起效果7. java - SSH框架中寫分頁時service層中不能注入分頁類8. node.js - 我是一個做前端的,求教如何學習vue,node等js引擎?9. 為什么我ping不通我的docker容器呢???10. html5 - 百度echart官網(wǎng)下載的地圖json數(shù)據(jù)亂碼
