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)建的類實(shí)現(xiàn)HandlerMethodArgumentResolver后,發(fā)現(xiàn)在里面注入bean實(shí)例都失效了,向上面的redisTemplate實(shí)例在運(yùn)行的時(shí)候就為null,同一個(gè)包下其他的class都是正常。請問是什么原因?qū)е耣ean的注入失敗。
問題解答
回答1:你使用的UserArgumentResolver對象沒有被IoC容器管理, 因?yàn)樵贎Autowired注解沒有配置required=false的情況下spring發(fā)現(xiàn)沒有該對象會(huì)直接拋出Exception, 不會(huì)出現(xiàn)注入null的情況.
回答2:HandlerMethodArgumentResolver接口應(yīng)該是被spring實(shí)例化的,不是IOC容器實(shí)例化管理的
相關(guān)文章:
1. docker gitlab 如何git clone?2. docker鏡像push報(bào)錯(cuò)3. 關(guān)于docker下的nginx壓力測試4. angular.js使用$resource服務(wù)把數(shù)據(jù)存入mongodb的問題。5. android - 項(xiàng)目時(shí)間長了,字符串文件strings有的字符串可能是多余的,有沒有辦法快速檢測那些是沒用的?6. android - 七牛單次上傳單張圖片,11次6次上傳失敗7. mysql - 用PHPEXCEL將excel文件導(dǎo)入數(shù)據(jù)庫數(shù)據(jù)5000+條,本地?cái)?shù)據(jù)庫正常,線上只導(dǎo)入15條,沒有報(bào)錯(cuò),哪里的問題?8. javascript - 怎么看網(wǎng)站用了什么技術(shù)框架?9. docker不顯示端口映射呢?10. 在windows下安裝docker Toolbox 啟動(dòng)Docker Quickstart Terminal 失敗!
