`

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

 

 

分享到:
评论

相关推荐

    Spring boot 自定义参数解析器

    通过自定义参数解析器,Spring Boot可以更好地满足项目中对参数处理的特殊需求,增强系统的灵活性和可扩展性。这个过程涉及到Spring的AOP(面向切面编程)和IoC(控制反转)理念,使得我们可以专注于业务逻辑,而不...

    springmvc自定义属性编辑器和参数解析器

    在Spring MVC框架中,属性编辑器(PropertyEditor)和参数解析器(HandlerMethodArgumentResolver)是两个关键组件,用于处理数据转换和模型绑定的过程。它们是实现灵活性和扩展性的重要手段,尤其在处理用户输入...

    Spring自定义参数解析器代码实例

    在Spring框架中,参数解析器(HandlerMethodArgumentResolver)是将 HTTP 请求参数转换为 Java 对象的桥梁。自定义参数解析器可以满足特殊的业务需求,例如在本例中,我们将实现一个自定义的 User 参数解析器,用于...

    SpringMVC源码总结(十)自定义HandlerMethodArgumentResolver

    在Spring MVC框架中,开发者有时需要自定义参数解析器以满足特定的应用场景需求。这篇博客“SpringMVC源码总结(十)自定义HandlerMethodArgumentResolver”深入探讨了这一主题,旨在帮助读者理解如何扩展Spring MVC...

    springboot基础框架,含请求参数自定义解析,动态数据源配置等功能

    然而,有时我们需要对参数进行特殊处理,例如格式转换、校验或者自定义逻辑,这时可以创建自定义的参数解析器。Spring提供了`HandlerMethodArgumentResolver`接口,我们可以实现这个接口并注册到Spring MVC的配置中...

    (代码)SpringMVC第4讲:参数传递类型

    另外,Spring MVC还提供了自定义参数绑定的机制,即实现`HandlerMethodArgumentResolver`接口,可以实现自己的参数解析逻辑,这在处理特殊类型或者复杂业务场景时非常有用。 总结起来,Spring MVC提供了丰富的参数...

    Spring MVC--3.请求参数

    如果默认的参数处理方式不能满足需求,我们可以注册自定义的参数解析器,实现`HandlerMethodArgumentResolver`接口。 9. **安全性考虑** 在处理请求参数时,需要注意防止SQL注入、跨站脚本攻击(XSS)等安全问题...

    springmvc各种参数绑定

    在`DispatcherServlet`中,`WebArgumentResolverAdapter`是这些解析器的抽象基类,它提供了一种统一的方式来处理参数解析。每个具体的解析器都会覆盖`resolveArgument()`方法,实现自己的数据绑定逻辑。例如,`...

    SpringMVC源码总结(九)HandlerMethodArgumentResolver介绍.pdf

    在Spring MVC框架中,HandlerMethodArgumentResolver扮演着关键角色,它是处理控制器方法参数解析的核心组件。这个接口允许我们自定义参数解析逻辑,以满足不同类型的请求数据处理需求。本篇文章将深入探讨...

    Spring Data JPA中文文档[1.4.3]

    SpringData扩展部分主要介绍了对Web层面的支持,如DomainClassConverter将领域类转换为控制器参数,HandlerMethodArgumentResolver参数解析器等。还包括了Repository填充、LegacyWebSupport,以及如何在SpringMVC中...

    spring 2.5框架图

    此外,Spring 2.5引入了HandlerMethodArgumentResolver接口,增强了参数解析能力。 5. **ORM包**:Spring的ORM模块整合了多种持久层框架,如Hibernate、JPA、JDBC等,提供了一致的编程模型和事务管理。Spring 2.5在...

    SSM自定义参数绑定

    首先,我们可以通过实现`HandlerMethodArgumentResolver`接口来自定义参数解析器。这个接口有两个核心方法:`supportsParameter`和`resolveArgument`。`supportsParameter`用于判断当前参数是否需要由该解析器处理,...

    spring-framework-3.1.2.RELEASE jar包

    此外,Spring 3.1引入了HandlerMethodArgumentResolver接口,使得自定义参数解析变得更加简单。 在事务管理方面,Spring 3.1.2.RELEASE改进了声明式事务处理,增强了对多数据源的支持,并提供了更细粒度的控制,...

    springmvc绑定Set的解决方案

    Spring MVC会自动将这些参数解析并添加到Set中。 2. **自定义转换器** 如果默认的自动绑定方式无法满足需求,例如,请求参数的格式与预期的Set元素类型不匹配,那么可以注册一个自定义的`Converter`。Spring MVC...

    Spring Boot接收单个String入参的解决方法

    最后,我们需要在Spring Boot的启动类中配置这个自定义的参数解析器。这里我们继承`WebMvcConfigurerAdapter`,并重写`addArgumentResolvers()`方法,将我们的解析器添加到解析器列表中。 ```java @SpringBoot...

    spring源码可导入eclipse版本 第五部分

    4.3.18版本的Spring MVC引入了诸如HandlerMethodArgumentResolver和HandlerExceptionResolver等接口,以增强控制器方法参数的解析和异常处理能力。此外,它还支持RESTful风格的URL设计,便于构建服务端API。 在Bean...

    parse parameter

    在Spring Boot中,我们还可以利用`HandlerMethodArgumentResolver`接口自定义参数解析逻辑。如果你有特殊的数据格式或需要进行复杂的验证,可以实现这个接口并注册到Spring的bean容器中。 关于源码分析,理解Spring...

    Spring MVC请求参数接收的全面总结教程

    首先,Spring MVC中处理控制器参数的接口是HandlerMethodArgumentResolver,该接口有众多子类,分别处理不同类型的参数。常见的子类包括RequestParamMethodArgumentResolver、RequestResponseBodyMethodProcessor、...

Global site tag (gtag.js) - Google Analytics