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. android - 哪位大神知道java后台的api接口的对象传到前端后输入日期报错,是什么情况?求大神指点2. mac里的docker如何命令行开启呢?3. css3: dl中如何让dr和dt视觉上显示到同一行?4. javascript - 如何向localStorage上的数组push数据5. javascript - hbuilder做的app在边看边改模式页面能跳转,为什么到了手机端就不能跳转?6. css - jq有无现成函数改变rotateX/Y的deg7. vue添加锚点,实现滚动页面时锚点添加相应的class操作8. 求救一下,用新版的phpstudy,数据库过段时间会消失是什么情况?9. ddos - apache日志很多其它网址,什么情况?10. javascript - node引入文件路径中的@是什么意思?
