欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot自定義對象參數(shù)超詳細介紹作用

 更新時間:2022年09月30日 14:43:04   作者:劉婉晴  
SpringBoot通過自定義對象參數(shù),可以實現(xiàn)自動類型轉換與格式化,并可以級聯(lián)封裝,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧

問題提出一:

當我們用表單獲取一個 Person 對象的所有屬性值時, SpringBoot 是否可以直接根據(jù)這些屬性值將其轉換為 Person 對象

回答:

當然可以,SpringBoot 通過自定義對象參數(shù),可以實現(xiàn)自動類型轉換與格式化,并可以級聯(lián)封裝(一個對象擁有另一個對象作為屬性時,也可以封裝)。

一、實體類 Bean

person類

注: 構造方法一定要寫全,無參數(shù)和有參數(shù)的都要寫,不然封裝過程會出問題

import org.springframework.context.annotation.Bean;
import javax.xml.crypto.Data;
public class Person {
    String userName;
    int age;
    Pet pet;
    public Person() {
    }
    public Person(String userName, int age, Pet pet) {
        this.userName = userName;
        this.age = age;
        this.pet = pet;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public Pet getPet() {
        return pet;
    }
    public void setPet(Pet pet) {
        this.pet = pet;
    }
}

pet類

package com.example.demo2.bean;
public class Pet {
    String name;
    String age;
    public Pet() {
    }
    public Pet(String name, String age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
}

二、前端表單index.html

注意 input 的 name 屬性值要與類的屬性名一一對應

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>自定義參數(shù)綁定原理</title>
</head>
<body>
    <form action="/saveuser" method="post">
        姓名: <input name="userName" value="liuwanqing"/> <br/>
        年齡: <input name="age" value="20"/> <br/>
        寵物姓名:<input name="pet.name"/><br/>
        寵物年齡:<input name="pet.age"  />
        <input type="submit" value="保存"> 
    </form>
</body>
</html>

三、Controller類

Post /saveuser 請求, 返回封裝好的 Person 類

package com.example.demo2.controller;
import com.example.demo2.bean.Person;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ParameterTestController {
    @PostMapping("/saveuser")
    public Person saveuser(Person person){
        return person;
    }
}

四、運行結果截圖

提出問題二: SpringBoot 之所以可以自動獲取表單值封裝為指定類型對象,是因為SpringBoot 具有嚴密的參數(shù)解析機制, 但是若我們的輸入值SpringBoot 不能解析時,難道我們就只能坐以待斃了嘛

回答: 不是,我們可以通過WebMvcConfigurer定制化SpringMVC的功能,通過重寫 addFormatters 方法自定義類型參數(shù)

示例

如下表單中的 “huahua,5個月” 字符串是不能被 SpringBoot 解析為 Pet 類型的

    <form action="/saveuser" method="post">
        姓名: <input name="userName" value="liuwanqing"/> <br/>
        年齡: <input name="age" value="20"/> <br/>
        寵物:<input name="pet" value="huahua,5個月"/>
        <input type="submit" value="保存">
    </form>

自定義類型參數(shù) 封裝POJO:

編寫WebConfig類實現(xiàn)WebMvcConfigurer類,重寫 addFormatters 方法

package com.example.demo2.config;
import com.example.demo2.bean.Pet;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
import org.springframework.format.FormatterRegistry;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer{
    //1、WebMvcConfigurer定制化SpringMVC的功能
    @Bean
    public WebMvcConfigurer webMvcConfigurer(){
        return new WebMvcConfigurer() {
            @Override
            public void addFormatters(FormatterRegistry registry) {
                registry.addConverter(new Converter<String, Pet>() {
                    @Override
                    public Pet convert(String source) {
                        if(!StringUtils.isEmpty(source)){
                            Pet pet = new Pet();
                            String[] split = source.split(",");
                            pet.setName(split[0]);
                            pet.setAge(split[1]);
                            return pet;
                        }
                        return null;
                    }
                });
            }
        };
    }
}

到此這篇關于SpringBoot自定義對象參數(shù)超詳細介紹作用的文章就介紹到這了,更多相關SpringBoot自定義對象參數(shù)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • java的JsonObject對象提取值方法

    java的JsonObject對象提取值方法

    下面小編就為大家分享一篇java的JsonObject對象提取值方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • IDEA啟動tomcat控制臺中文亂碼問題的解決方法(100%有效)

    IDEA啟動tomcat控制臺中文亂碼問題的解決方法(100%有效)

    很多人在idea中啟動項目時會出現(xiàn)控制臺的中文亂碼,其實也無傷大雅,但是本人看著不舒服,下面這篇文章主要給大家介紹了關于IDEA啟動tomcat控制臺中文亂碼問題的解決方法,需要的朋友可以參考下
    2022-09-09
  • JavaSE異常Exception處理方法以及自定義

    JavaSE異常Exception處理方法以及自定義

    網(wǎng)絡異常exception是指在網(wǎng)絡通信過程中出現(xiàn)的異常情況,這些異??赡苁怯捎诰W(wǎng)絡連接不穩(wěn)定、網(wǎng)絡故障、服務器故障、網(wǎng)絡擁堵等原因導致的,這篇文章主要給大家介紹了關于JavaSE異常Exception處理方法以及自定義的相關資料,需要的朋友可以參考下
    2024-07-07
  • SpringBoot自定義路由覆蓋實現(xiàn)流程詳解

    SpringBoot自定義路由覆蓋實現(xiàn)流程詳解

    這篇文章主要介紹了SpringBoot自定義路由覆蓋實現(xiàn)流程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-01-01
  • Java Kafka 消費積壓監(jiān)控的示例代碼

    Java Kafka 消費積壓監(jiān)控的示例代碼

    這篇文章主要介紹了Java Kafka 消費積壓監(jiān)控,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07
  • Java數(shù)據(jù)庫連接池之DBCP淺析_動力節(jié)點Java學院整理

    Java數(shù)據(jù)庫連接池之DBCP淺析_動力節(jié)點Java學院整理

    這篇文章主要為大家詳細介紹了Java數(shù)據(jù)庫連接池之DBCP的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 詳解SpringCloud Ribbon 負載均衡通過服務器名無法連接的神坑

    詳解SpringCloud Ribbon 負載均衡通過服務器名無法連接的神坑

    這篇文章主要介紹了詳解SpringCloud Ribbon 負載均衡通過服務器名無法連接的神坑,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • springboot + vue 實現(xiàn)遞歸生成多級菜單(實例代碼)

    springboot + vue 實現(xiàn)遞歸生成多級菜單(實例代碼)

    這篇文章主要介紹了springboot + vue 實現(xiàn)遞歸生成多級菜單,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • 一文秒懂?kafka?HA(高可用)

    一文秒懂?kafka?HA(高可用)

    這篇文章主要介紹了秒懂?kafka?HA(高可用)的相關知識,本文我們來說一說和?kafka?高可用相關的一些策略,對kafka?HA相關知識感興趣的朋友一起看看吧
    2021-11-11
  • 詳細分析JAVA加解密算法

    詳細分析JAVA加解密算法

    這篇文章主要介紹了JAVA加解密算法的的相關資料,文中講解非常詳細,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-06-06

最新評論