当前位置: 首页 > news >正文

合肥网站制作专业/广州网站设计建设

合肥网站制作专业,广州网站设计建设,做网站公司郑州郑州的网站建设公司排名,一个域名一个ip做多个网站35、请求处理-【源码分析】-自定义参数绑定原理 自定义参数绑定原理主要涉及Spring Boot如何将HTTP请求中的参数自动绑定到控制器方法的自定义对象参数上。以下是详细的解析: ### 1. 参数解析器的选择 - **HandlerMethodArgumentResolverComposite**: - …

35、请求处理-【源码分析】-自定义参数绑定原理

自定义参数绑定原理主要涉及Spring Boot如何将HTTP请求中的参数自动绑定到控制器方法的自定义对象参数上。以下是详细的解析:

### 1. 参数解析器的选择

- **HandlerMethodArgumentResolverComposite**:

  - Spring Boot内部维护了一个`HandlerMethodArgumentResolverComposite`,它包含多个`HandlerMethodArgumentResolver`实例。

  - 当处理请求时,会遍历这些解析器,调用`supportsParameter`方法判断哪个解析器支持当前参数类型。

### 2. ServletModelAttributeMethodProcessor

- **支持参数类型**:

  - `ServletModelAttributeMethodProcessor`是关键的参数解析器,负责处理自定义POJO类型的参数。

  - 它通过`supportsParameter`方法判断参数是否满足以下条件:

    - 参数类型不是简单类型(如基本类型、集合等)。

    - 参数上存在`@ModelAttribute`注解,或没有该注解但`annotationNotRequired`为`true`。

### 3. 参数绑定过程

#### 创建目标对象

- **创建空对象**:

  - 调用`createAttribute`方法,通过反射创建自定义POJO类型的空对象实例。

#### 数据绑定

- **WebDataBinder**:

  - 使用`WebDataBinderFactory`创建`WebDataBinder`实例,用于将请求参数绑定到目标对象。

  - `WebDataBinder`内部维护了`Converters`集合,用于数据类型转换。

- **绑定请求参数**:

  - 调用`bindRequestParameters`方法,遍历请求中的所有参数。

  - 通过反射获取目标对象的属性,将请求参数值设置到对应的属性上。

  - 利用`Converters`进行类型转换,例如将字符串转换为日期类型。

### 4. 示例说明

假设有以下控制器方法:

```java

@PostMapping("/saveUser")

public String saveUser(Person person) {

    // ...

}

```

其中,`Person`类包含`name`、`age`和`birth`属性。

当提交表单数据:

```

name=张三&age=18&birth=2020-01-01

```

- **参数解析**:

  - `ServletModelAttributeMethodProcessor`识别`Person`类型参数。

  - 创建`Person`对象实例。

  - 使用`WebDataBinder`将请求参数绑定到`Person`对象的属性上。

### 5. 自定义类型转换

- **Converter注册**:

  - 若需要自定义类型转换,例如将特定格式的字符串转换为自定义类型,可以实现`Converter`接口。

  - 通过`WebMvcConfigurer`的`addFormatters`方法将自定义`Converter`注册到`FormattingConversionService`中。

### 6. 总结

自定义参数绑定原理:

1. **解析器选择**:通过`HandlerMethodArgumentResolverComposite`找到支持自定义POJO类型的`ServletModelAttributeMethodProcessor`。

2. **对象创建**:创建目标POJO对象实例。

3. **数据绑定**:利用`WebDataBinder`将请求参数绑定到对象属性,借助`Converters`进行类型转换。

通过理解这一原理,可以更灵活地处理各种复杂的请求参数绑定需求。

http://www.lryc.cn/news/580747.html

相关文章:

  • 网站排名优化课程/营销网点机构号
  • wordpress 资源站点/seo如何优化网站步骤
  • 成都市建设二维码检测网站/seo关键词优化工具
  • 做推文的网站知乎/前端开发培训机构推荐
  • 广德县建设协会网站/自己建立网站步骤
  • 静态单页网站wordpress/app推广代理去哪里找
  • 网站建设公司服务公司/海外广告优化师
  • 做网站的如何开发业务/模板免费下载网站
  • c 做网站用什么框架/北京出大大事了
  • 中企视窗做网站怎么样/友联互换
  • 长春市网站制作/google年度关键词
  • 企业网站的主要功能板块/百度一下官网首页网址
  • 山东省住房和城乡建设厅电话/seo对各类网站的作用
  • 做搜狗手机网站快速排/策划公司
  • 哪个网站可以免费做音乐相册/怎么设计一个网页
  • 专业站/电商网站平台搭建
  • 大学生创意电子产品设计/北京seo加盟
  • b站黄页推广网站/seo专员岗位职责
  • 网站首页英文/torrentkitty搜索引擎
  • 云课堂哪个网站做的好/广州企业网站seo
  • wordpress 引入css/重庆电子商务网站seo
  • 聊天交友网站建设费用/7个湖北seo网站推广策略
  • 如何快速做网站/uc搜索引擎入口
  • 品牌营销的概念/青岛seo经理
  • 嵌入式软件开发工资/seo项目经理
  • wordpress支持多个站点地址/阳城seo排名
  • 郑州网站seo费用/百度无广告搜索引擎
  • 服务专业的网站制作服务/湖北荆门今日头条
  • erp系统的功能包括哪些/重庆电子商务seo
  • 官方网站想反应问题不弄应该怎么做/百度集团官网