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; }}
創建的類實現HandlerMethodArgumentResolver后,發現在里面注入bean實例都失效了,向上面的redisTemplate實例在運行的時候就為null,同一個包下其他的class都是正常。請問是什么原因導致bean的注入失敗。
問題解答
回答1:你使用的UserArgumentResolver對象沒有被IoC容器管理, 因為在@Autowired注解沒有配置required=false的情況下spring發現沒有該對象會直接拋出Exception, 不會出現注入null的情況.
回答2:HandlerMethodArgumentResolver接口應該是被spring實例化的,不是IOC容器實例化管理的
相關文章:
1. html5 - 有可以一次性把所有 css外部樣式轉為html標簽內style=" "的方法嗎?2. sql語句 - mysql中關聯表查詢問題3. javascript - [js]為什么畫布里不出現圖片呢?在線等4. javascript - 如何將一個div始終固定在某個位置;無論屏幕和分辨率怎么變化;div位置始終不變5. javascript - vscode alt+shift+f 格式化js代碼,通不過eslint的代碼風格檢查怎么辦。。。6. html - vue項目中用到了elementUI問題7. javascript - 有什么比較好的網頁版shell前端組件?8. javascript - iframe 為什么加載網頁的時候滾動條這樣顯示?9. javascript - 這不是對象字面量函數嗎?為什么要new初始化?10. javascript - 原生canvas中如何獲取到觸摸事件的canvas內坐標?
