Spring Handlermethodargumentresolver parameter resolver

 

 

 

 How to use 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);
		
		//According to different types, take different processing methods
		if(b) {
			logger.info("Json2Bean");
			Test1 t = new Test1();
			t.setName("Little King");
			t.setAge("7");
			return t;          
		}else {
			logger.info("Json2Bean2");
			return null;
		}
		

		//return null;
	}
        //supportsParameter returns true and executes the resolveArgument method
	@Override
	public boolean supportsParameter(MethodParameter parameter) {
		System.out.println("==============supportsParameter========Return true and execute the resolveArgument method");
		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;  
    }

 

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326260886&siteId=291194637