Spring Handlermethodargumentresolver 参数解析器

 Spring Boot 使用方法

import java.lang.annotation.Documented;  
import java.lang.annotation.Retention;  
import java.lang.annotation.RetentionPolicy;  
import java.lang.annotation.Target;  
@Target({java.lang.annotation.ElementType.PARAMETER})  
@Retention(RetentionPolicy.RUNTIME)  
@Documented  
public @interface Json2Bean {  
  
} 
import java.lang.annotation.Documented;  
import java.lang.annotation.Retention;  
import java.lang.annotation.RetentionPolicy;  
import java.lang.annotation.Target;  
@Target({java.lang.annotation.ElementType.PARAMETER})  
@Retention(RetentionPolicy.RUNTIME)  
@Documented  
public @interface Json2Bean2 {  
  
} 
@Component
public class MyHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver{
	private static final Logger logger = LoggerFactory.getLogger(MyHandlerMethodArgumentResolver.class);
	@Override
	public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer container, NativeWebRequest request,
			WebDataBinderFactory factory) throws Exception {
		
		boolean b = parameter.hasParameterAnnotation(Json2Bean.class);
		System.out.println("==============resolveArgument================" + b);
		
		//根据不同的类型走不同的处理方式
		if(b) {
			logger.info("Json2Bean");
			Test1 t = new Test1();
			t.setName("小王");
			t.setAge("7");
			return t;          
		}else {
			logger.info("Json2Bean2");
			return null;
		}
		

		//return null;
	}
        //supportsParameter 返回true 执行 resolveArgument方法
	@Override
	public boolean supportsParameter(MethodParameter parameter) {
		System.out.println("==============supportsParameter========返回true 执行 resolveArgument方法");
		return true;
	}

}
@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {
    @Autowired
    private AuthorizationInterceptor authorizationInterceptor;
    @Autowired
    private MyHandlerMethodArgumentResolver myHandlerMethodArgumentResolver;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(authorizationInterceptor).addPathPatterns("/**");
    }

    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
        argumentResolvers.add(myHandlerMethodArgumentResolver);
    }

//    @Override
//    public void addResourceHandlers(ResourceHandlerRegistry registry) {
//        registry.addResourceHandler("swagger-ui.html")
//                .addResourceLocations("classpath:/META-INF/resources/");
//
//        registry.addResourceHandler("/webjars/**")
//                .addResourceLocations("classpath:/META-INF/resources/webjars/");
//    }
}
    
    @RequestMapping("/getTestByName")  
    public @ResponseBody Test1 getUserByName(@Json2Bean Test1 test1){  
        System.out.println(test1);  
        String name = test1.getName();  
        System.out.println(name); 	
        return test1;  
    } 
    
    
    @RequestMapping("/getTestByName2")  
    public @ResponseBody Test1 getTestByName2(@Json2Bean2 Test1 test1){  
        System.out.println(test1);  
        String name = test1.getName();  
        System.out.println(name); 	
        return test1;  
    } 

猜你喜欢

转载自xinjiatao.iteye.com/blog/2410941
今日推荐