spring 注入为null问题

如图:

@Component
public 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();
       // todo
        return null;
    }
}

创建的类实现HandlerMethodArgumentResolver后,发现在里面注入bean实例都失效了,向上面的redisTemplate实例在运行的时候就为null,同一个包下其他的class都是正常。
请问是什么原因导致bean的注入失败。

LEATH
浏览 693回答 2
2回答

饮歌长啸

你使用的UserArgumentResolver对象没有被IoC容器管理, 因为在@Autowired注解没有配置required=false的情况下spring发现没有该对象会直接抛出Exception, 不会出现注入null的情况.

Cats萌萌

HandlerMethodArgumentResolver接口应该是被spring实例化的,不是IOC容器实例化管理的
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java