首頁  >  問答  >  主體

java - 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的注入失敗。

phpcn_u1582phpcn_u15822712 天前478

全部回覆(2)我來回復

  • PHP中文网

    PHP中文网2017-05-17 09:59:40

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

    回覆
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-17 09:59:40

    HandlerMethodArgumentResolver介面應該是被spring實例化的,不是IOC容器實例化管理的

    回覆
    0
  • 取消回覆