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. javascript - 如何将 windows 下编辑器中的 CRLF 替换为 LF?2. 请教,关于python字典,合并相同值的键的实现方法3. android - 京东移动端网页和其app加载的url所做的呈现不应该是完全一样的吗?4. javamail发送邮件是否跟所在的网络环境有关?5. css3中translate(-50%,-50%)对 transform-origin的奇葩影响?6. html5 - 在一个页面中 初始了两个swiper 不知道哪里错了 一直不对7. Windows系统能否利用Docker使用Ubuntu吗?Ubuntu能使用本机的显卡吗?8. javascript - 求解答:实例对象调用constructor,此时constructor内的this的指向?9. mysql5.7就没有官方性质的详细配置文件吗?求大神告知10. python的MySQLdb库中的executemany方法如何改变默认加上的单引号?

网公网安备