这篇文章主要介绍了弹簧自定义参数解析器代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
结合复述,编写用户自定义参数解析器UserArgumentResolver
进口javax.servlet.http.Cookie; 进口javax.servlet.http.HttpServletRequest; 进口org.springframework.beans.factory.annotation.Autowired; 进口org.springframework.core.MethodParameter; 进口org.springframework.stereotype.Service; 进口org.springframework.web.bind.support.WebDataBinderFactory; 进口org.springframework.web.context.request.NativeWebRequest; 进口org.springframework.web.method.support.HandlerMethodArgumentResolver; 进口org.springframework.web.method.support.ModelAndViewContainer; 进口cn.xingaohbd.seckil.model.User; 进口cn.xingaohbd.seckil.service.UserService; @ service 公共类UserArgumentResolver实现HandlerMethodArgumentResolver { @ autowired 公共UserService UserService; 公共字符串getParameterCokies (HttpServletRequest请求,字符串tokenName) { 饼干饼干[]=request.getCookies (); (饼干ck:饼干){ 如果(ck.getName () .equals (tokenName)) { 返回ck.getValue (); } } 返回null; } @Override 公共布尔supportsParameter (MethodParameter MethodParameter) { Class<& # 63;比;p_class=methodParameter.getParameterType (); 返回p_class==User.class; } @Override 公共对象resolveArgument (MethodParameter参数,ModelAndViewContainer mavContainer, {NativeWebRequest NativeWebRequest, WebDataBinderFactory binderFactory)抛出异常 HttpServletRequest请求=nativeWebRequest.getNativeRequest (HttpServletRequest.class); 字符串requestParameter_token=request.getParameter(“令牌”); 字符串cokies_token=getParameterCokies(请求,“令牌”); 如果(requestParameter_token==零,,cokies_token==null) { 返回null; } userService返回。getUserFromRedisByToken (requestParameter_token !=null & # 63;requestParameter_token: cokies_token); } }
UserService
@ service @ transactional 公共类UserServiceImpl实现UserService { @ autowired 私人UserRedis UserRedis; @Override 公共对象getUserFromRedisByToken(字符串标记){ 返回userRedis.get(令牌); } }
在WebConfig中注册自定义参数解析器UserArgumentResolver
进口并不知道; 进口org.springframework.beans.factory.annotation.Autowired; 进口org.springframework.context.annotation.Configuration; 进口org.springframework.util.ResourceUtils; 进口org.springframework.web.method.support.HandlerMethodArgumentResolver; 进口org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 进口org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; @ configuration 公开课WebConfig延伸WebMvcConfigurationSupport { @ autowired UserArgumentResolver UserArgumentResolver; @Override 保护无效addArgumentResolvers (ListargumentResolvers) { argumentResolvers.add (userArgumentResolver); } 公共空间addResourceHandlers (ResourceHandlerRegistry注册表){ registry.addResourceHandler (“/* *”) .addResourceLocations (ResourceUtils.CLASSPATH_URL_PREFIX +/静态/); super.addResourceHandlers(注册表); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。