@RequestMapping("/map.do")
@ResponseBody
public Map<String, Integer> map(@FParam String user)
{
System.out.println("user:" + user);
return ImmutableMap.of("a", 1, "b", 2, "c", 3, "d", 4, "e", 5);
}
这里的参数user不用接口传,在FParamResolver已经赋值了,user=super man
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface FParam
{ String name() default "";}
@Configuration
@ComponentScan("com.example.spring_web")
public class Config extends WebMvcConfigurationSupport {
@Override protected void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) { argumentResolvers.add(new FParamResolver()); }}
public class FParamResolver implements HandlerMethodArgumentResolver
{
@Override
public boolean supportsParameter(MethodParameter parameter)
{ return parameter.hasParameterAnnotation(FParam.class); }
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception
{
String userName = "super man";
//这个值可以从redis或者mysql中查出来, 这里返回userName就赋值给了方法参数中带@FParam注解的参数
return userName; }
}
网友评论