java - L'injection de ressort est un problème nul
phpcn_u1582
phpcn_u1582 2017-05-17 09:57:40
0
2
470

Comme le montre l'image :

@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;
    }
}

Après que la classe créée ait implémenté HandlerMethodArgumentResolver, il a été constaté que les instances de bean qui y étaient injectées avaient échoué. L'instance redisTemplate ci-dessus était nulle lors de l'exécution et les autres classes du même package étaient normales.
S'il vous plaît, dites-moi ce qui a causé l'échec de l'injection du grain.

phpcn_u1582
phpcn_u1582

répondre à tous(2)
Ty80

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

我想大声告诉你

L'interface HandlerMethodArgumentResolver doit être instanciée d'ici Spring, et non gérée par l'instanciation du conteneur IOC

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!