java - spring 注入為null問(wèn)題
問(wèn)題描述
如圖:
@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)建的類(lèi)實(shí)現(xiàn)HandlerMethodArgumentResolver后,發(fā)現(xiàn)在里面注入bean實(shí)例都失效了,向上面的redisTemplate實(shí)例在運(yùn)行的時(shí)候就為null,同一個(gè)包下其他的class都是正常。請(qǐng)問(wèn)是什么原因?qū)е耣ean的注入失敗。
問(wèn)題解答
回答1:你使用的UserArgumentResolver對(duì)象沒(méi)有被IoC容器管理, 因?yàn)樵贎Autowired注解沒(méi)有配置required=false的情況下spring發(fā)現(xiàn)沒(méi)有該對(duì)象會(huì)直接拋出Exception, 不會(huì)出現(xiàn)注入null的情況.
回答2:HandlerMethodArgumentResolver接口應(yīng)該是被spring實(shí)例化的,不是IOC容器實(shí)例化管理的
相關(guān)文章:
1. 關(guān)于docker下的nginx壓力測(cè)試2. angular.js使用$resource服務(wù)把數(shù)據(jù)存入mongodb的問(wèn)題。3. angular.js - angularjs的自定義過(guò)濾器如何給文字加顏色?4. docker-machine添加一個(gè)已有的docker主機(jī)問(wèn)題5. 為什么我ping不通我的docker容器呢???6. docker安裝后出現(xiàn)Cannot connect to the Docker daemon.7. docker - 如何修改運(yùn)行中容器的配置8. nignx - docker內(nèi)nginx 80端口被占用9. Docker for Mac 創(chuàng)建的dnsmasq容器連不上/不工作的問(wèn)題10. docker鏡像push報(bào)錯(cuò)
