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ǐng)問是什么原因?qū)е耣ean的注入失敗。
問題解答
回答1:你使用的UserArgumentResolver對(duì)象沒有被IoC容器管理, 因?yàn)樵贎Autowired注解沒有配置required=false的情況下spring發(fā)現(xiàn)沒有該對(duì)象會(huì)直接拋出Exception, 不會(huì)出現(xiàn)注入null的情況.
回答2:HandlerMethodArgumentResolver接口應(yīng)該是被spring實(shí)例化的,不是IOC容器實(shí)例化管理的
相關(guān)文章:
1. 查詢mysql數(shù)據(jù)庫中指定表指定日期的數(shù)據(jù)?有詳細(xì)2. mysql - 怎么生成這個(gè)sql表?3. mysql儲(chǔ)存json錯(cuò)誤4. php - 公眾號(hào)文章底部的小程序二維碼如何統(tǒng)計(jì)?5. mysql - 表名稱前綴到底有啥用?6. mysql - 數(shù)據(jù)庫表中,兩個(gè)表互為外鍵參考如何解決7. Navicat for mysql 中以json格式儲(chǔ)存的數(shù)據(jù)存在大量反斜杠,如何去除?8. 在mybatis使用mysql的ON DUPLICATE KEY UPDATE語法實(shí)現(xiàn)存在即更新應(yīng)該使用哪個(gè)標(biāo)簽?9. mysql - 數(shù)據(jù)庫建字段,默認(rèn)值空和empty string有什么區(qū)別 11010. sql語句 - 如何在mysql中批量添加用戶?
