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的AOP(面向切面编程)和IoC(控制反转)理念,使得我们可以专注于业务逻辑,而不...
在Spring MVC框架中,属性编辑器(PropertyEditor)和参数解析器(HandlerMethodArgumentResolver)是两个关键组件,用于处理数据转换和模型绑定的过程。它们是实现灵活性和扩展性的重要手段,尤其在处理用户输入...
在Spring框架中,参数解析器(HandlerMethodArgumentResolver)是将 HTTP 请求参数转换为 Java 对象的桥梁。自定义参数解析器可以满足特殊的业务需求,例如在本例中,我们将实现一个自定义的 User 参数解析器,用于...
在Spring MVC框架中,开发者有时需要自定义参数解析器以满足特定的应用场景需求。这篇博客“SpringMVC源码总结(十)自定义HandlerMethodArgumentResolver”深入探讨了这一主题,旨在帮助读者理解如何扩展Spring MVC...
然而,有时我们需要对参数进行特殊处理,例如格式转换、校验或者自定义逻辑,这时可以创建自定义的参数解析器。Spring提供了`HandlerMethodArgumentResolver`接口,我们可以实现这个接口并注册到Spring MVC的配置中...
另外,Spring MVC还提供了自定义参数绑定的机制,即实现`HandlerMethodArgumentResolver`接口,可以实现自己的参数解析逻辑,这在处理特殊类型或者复杂业务场景时非常有用。 总结起来,Spring MVC提供了丰富的参数...
如果默认的参数处理方式不能满足需求,我们可以注册自定义的参数解析器,实现`HandlerMethodArgumentResolver`接口。 9. **安全性考虑** 在处理请求参数时,需要注意防止SQL注入、跨站脚本攻击(XSS)等安全问题...
在`DispatcherServlet`中,`WebArgumentResolverAdapter`是这些解析器的抽象基类,它提供了一种统一的方式来处理参数解析。每个具体的解析器都会覆盖`resolveArgument()`方法,实现自己的数据绑定逻辑。例如,`...
在Spring MVC框架中,HandlerMethodArgumentResolver扮演着关键角色,它是处理控制器方法参数解析的核心组件。这个接口允许我们自定义参数解析逻辑,以满足不同类型的请求数据处理需求。本篇文章将深入探讨...
SpringData扩展部分主要介绍了对Web层面的支持,如DomainClassConverter将领域类转换为控制器参数,HandlerMethodArgumentResolver参数解析器等。还包括了Repository填充、LegacyWebSupport,以及如何在SpringMVC中...
此外,Spring 2.5引入了HandlerMethodArgumentResolver接口,增强了参数解析能力。 5. **ORM包**:Spring的ORM模块整合了多种持久层框架,如Hibernate、JPA、JDBC等,提供了一致的编程模型和事务管理。Spring 2.5在...
首先,我们可以通过实现`HandlerMethodArgumentResolver`接口来自定义参数解析器。这个接口有两个核心方法:`supportsParameter`和`resolveArgument`。`supportsParameter`用于判断当前参数是否需要由该解析器处理,...
此外,Spring 3.1引入了HandlerMethodArgumentResolver接口,使得自定义参数解析变得更加简单。 在事务管理方面,Spring 3.1.2.RELEASE改进了声明式事务处理,增强了对多数据源的支持,并提供了更细粒度的控制,...
Spring MVC会自动将这些参数解析并添加到Set中。 2. **自定义转换器** 如果默认的自动绑定方式无法满足需求,例如,请求参数的格式与预期的Set元素类型不匹配,那么可以注册一个自定义的`Converter`。Spring MVC...
最后,我们需要在Spring Boot的启动类中配置这个自定义的参数解析器。这里我们继承`WebMvcConfigurerAdapter`,并重写`addArgumentResolvers()`方法,将我们的解析器添加到解析器列表中。 ```java @SpringBoot...
4.3.18版本的Spring MVC引入了诸如HandlerMethodArgumentResolver和HandlerExceptionResolver等接口,以增强控制器方法参数的解析和异常处理能力。此外,它还支持RESTful风格的URL设计,便于构建服务端API。 在Bean...
在Spring Boot中,我们还可以利用`HandlerMethodArgumentResolver`接口自定义参数解析逻辑。如果你有特殊的数据格式或需要进行复杂的验证,可以实现这个接口并注册到Spring的bean容器中。 关于源码分析,理解Spring...
首先,Spring MVC中处理控制器参数的接口是HandlerMethodArgumentResolver,该接口有众多子类,分别处理不同类型的参数。常见的子类包括RequestParamMethodArgumentResolver、RequestResponseBodyMethodProcessor、...