最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot3.1.2 引入Swagger報(bào)錯(cuò)Type javax.servlet.http.HttpServletRequest not present解決辦法

 更新時(shí)間:2024年03月06日 11:33:29   作者:liyinchi1988  
這篇文章主要介紹了SpringBoot3.1.2 引入Swagger報(bào)錯(cuò)Type javax.servlet.http.HttpServletRequest not present解決辦法,文中通過代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下

1.問題描述:

引入swagger2.X版本后,導(dǎo)致SpringBoot3.1.2啟動(dòng)報(bào)錯(cuò)

2.原因分析:

SpringBoot3.1.2版本依賴于jakarta依賴包,但是Swagger依賴底層應(yīng)用的javax依賴包,所以只要一啟動(dòng)就會(huì)報(bào)錯(cuò)。

3.解決辦法:

pom.xml文件,移除swagger2

<dependency>
     <groupId>io.springfox</groupId>
     <artifactId>springfox-swagger2</artifactId>
     <version>2.9.2</version>
 </dependency>
 
 <dependency>
     <groupId>com.github.xiaoymin</groupId>
     <artifactId>swagger-bootstrap-ui</artifactId>
     <version>1.9.0</version>
     <scope>provided</scope>
 </dependency>

加入

<dependency>
    <groupId>io.swagger.core.v3</groupId>
    <artifactId>swagger-annotations</artifactId>
     <version>2.2.15</version>
</dependency>
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.1.0</version>
</dependency>

代碼修改

@Api(tags = "")     
改為     
@Tag(name = "")
 
@ApiModel(value="", description="")     
改為    
@Schema(name="", description="")
 
@ApiModelProperty(value = "", required = true)     
改為    
@Schema(name= "", description = "", required = true)
 
@ApiOperation(value = "", notes = "")    
改為    
@Operation(summary = "", description = "")
 
@ApiParam    改為     @Parameter
 
@ApiResponse(code = 404, message = "")  
改為
@ApiResponse(responseCode = "404", description = "")

SwaggerConfig.java

package com.example.lyc.springboot.demo.config;
 
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
@Configuration
public class SwaggerConfig {
 
    @Bean
    public GroupedOpenApi publicApi() {
        return GroupedOpenApi.builder()
                .group("public")
                .pathsToMatch("/public/**")
                .build();
    }
 
    @Bean
    public GroupedOpenApi privateApi() {
        return GroupedOpenApi.builder()
                .group("private")
                .pathsToMatch("/private/**")
                .build();
    }
}

實(shí)體類

package com.example.lyc.springboot.demo.entity;
 
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
 
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@Schema(name = "User", description = "用戶實(shí)體類")
public class User {
    @Schema(name = "id", description = "用戶id")
    private int id;
    @Schema(name = "userName", description = "用戶名")
    private String userName;
    @Schema(name = "password", description = "密碼")
    private String password;
 
    /* 省略get、set和帶參構(gòu)造方法 */
 
}

controller類

package com.example.lyc.springboot.demo.controller;
 
import com.example.lyc.springboot.demo.config.MicroServiceUrl;
import com.example.lyc.springboot.demo.entity.User;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Value;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@RestController
@RequestMapping("/v1")
@Schema(name="", description="")
@Tag(name = "JsonController tags")
public class JsonController {
    @Value("${microservice.url.orderUrl}")
    String orderUrl;// orderUrl變量值 就是application.yml的url.orderUrl值
    @Autowired
    private User user;// 注入
    @Autowired
    MicroServiceUrl MicroServiceUrl; // 注入配置類
 
    @GetMapping("/user")
    @ResponseBody
    @Operation(summary = "獲取用戶信息", description = "獲取用戶信息")
    public User getUser() {
        user.setId(1);
        user.setUserName("李銀池");
        user.setPassword("123456");
        // 日志輸出
        log.info("user:{}", user);
        // 返回
        return user;
    }
 
    /***
     * @Description: list
     * @Author: liyinchi
     * @Date: 2023/9/18 11:17
     * @return map
     */
    @GetMapping("/list")
    @ResponseBody
    @Operation(summary = "獲取用戶列表", description = "獲取用戶列表")
    public List<User> getUserList() {
        List<User> userList = new ArrayList<>();
        User user1 = new User(1, "李銀池", "123456");
        User user2 = new User(2, "王哈哈", "123456");
        userList.add(user1);
        userList.add(user2);
        // 日志輸出
        log.info("userList:{}", userList);
        // 返回?cái)?shù)據(jù)
        return userList;
    }
 
    /***
     * @Description: map
     * @Author: liyinchi
     * @Date: 2023/9/18 11:17
     * @return map
     */
    @GetMapping("/map")
    @ResponseBody
    @Operation(summary = "獲取用戶信息", description = "獲取用戶信息")
    public Map<String, Object> getMap() {
        Map<String, Object> map = new HashMap<>(3);
        User user = new User(1, "李銀池", "123456");
        map.put("作者信息", user);
        map.put("github", "https://github.com/liyinchigithub");
        map.put("CSDN地址", "https://blog.csdn.net/u013302168");
        map.put("粉絲數(shù)量", 252);
        // 日志輸出
        log.info("map:{}", map);
        // 返回
        return map;
    }
 
    /***
     * @Description: 讀取application.yml配置文件參數(shù)
     * @Author: liyinchi
     * @Date: 2023/9/18 11:17
     * @return map
     */
    @GetMapping("/getYMLConfig")
    @ResponseBody
    @Operation(summary = "獲取配置文件參數(shù)", description = "獲取配置文件參數(shù)")
    public Map<String,Object> getYMLConfig() {
        Map<String,Object> orderUrlList = new HashMap();
        orderUrlList.put("microservice url orderUrl",orderUrl);
        log.info("orderUrl:{}", orderUrl);
        return orderUrlList;
    }
 
    /***
     * @Description: 讀取application.yml配置文件參數(shù)
     * @Author: liyinchi
     * @Date: 2023/9/18 11:17
     * @return map
     */
    @GetMapping("/getYMLConfigClass")
    @ResponseBody
    @Operation(summary = "獲取配置文件參數(shù)", description = "獲取配置文件參數(shù)")
    public Map<String,Object> getYMLConfigClass() {
        Map<String,Object> orderUrlList = new HashMap();
        orderUrlList.put("orderUrl",MicroServiceUrl.getOrderUrl());
        orderUrlList.put("userUrl",MicroServiceUrl.getUserUrl());
        orderUrlList.put("shoppingUrl",MicroServiceUrl.getShoppingUrl());
        log.info("getYMLConfigClass orderUrlMap:{}", orderUrlList);
        return orderUrlList;
    }
 
    /***
     * @Description: 獲取請(qǐng)求體
     * @Date: 20239/18 14:00
     * @param User user
     * @return map
     */
    @PostMapping("/addUser")
    @ResponseBody
    @Operation(summary = "獲取請(qǐng)求體", description = "獲取請(qǐng)求體")
    public Map<String,Object> getUser(@RequestBody @Parameter User user) { // 獲取請(qǐng)求體
        Map<String,Object> map = new HashMap();
        map.put("user",user);
        return map;
    }
 
}

遇到報(bào)錯(cuò):

java.lang.StringIndexOutOfBoundsException: begin 11, end 10, length 10

原因分析:

由于Springdoc OpenAPI UI的版本與Spring Boot的版本不兼容導(dǎo)致的。你正在使用的Springdoc OpenAPI UI的版本是2.1.0,而Spring Boot的版本是3.1.2。這兩個(gè)版本可能存在不兼容的問題。

解決辦法:

你可以嘗試將Springdoc OpenAPI UI的版本升級(jí)到與Spring Boot 3.1.2更兼容的版本。你可以在Springdoc的GitHub倉庫的release頁面查看各個(gè)版本的發(fā)布說明,找到一個(gè)與Spring Boot 3.1.2兼容的版本。

然后,你可以在你的pom.xml文件中更新Springdoc OpenAPI UI的版本:

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-ui</artifactId>
    <version>新的版本號(hào)</version>
</dependency>

https://github.com/springdoc/springdoc-openapi/releases

修改成支持springboot3.1.2的版本2.2.0后,成功~

以上就是SpringBoot3.1.2 引入Swagger報(bào)錯(cuò)Type javax.servlet.http.HttpServletRequest not present解決辦法的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot3.1.2 引入Swagger報(bào)錯(cuò)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java8實(shí)戰(zhàn)之Stream的延遲計(jì)算

    Java8實(shí)戰(zhàn)之Stream的延遲計(jì)算

    JDK中Stream的中間函數(shù)如 filter(Predicate super T>)是惰性求值的,filter并非對(duì)流中所有元素調(diào)用傳遞給它的Predicate,下面這篇文章主要給大家介紹了關(guān)于Java8實(shí)戰(zhàn)之Stream延遲計(jì)算的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • Java 中函數(shù)作為參數(shù)傳遞方法詳解

    Java 中函數(shù)作為參數(shù)傳遞方法詳解

    文章介紹了Java中函數(shù)式編程的概念,包括Lambda表達(dá)式、方法引用和函數(shù)式接口,通過這些特性,Java可以將函數(shù)作為參數(shù)傳遞,從而實(shí)現(xiàn)更靈活和簡(jiǎn)潔的代碼,文章還列舉了Java內(nèi)置的函數(shù)式接口,并展示了它們?cè)赟tream API中的應(yīng)用,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • Java多線程volatile原理及用法解析

    Java多線程volatile原理及用法解析

    這篇文章主要介紹了Java多線程volatile原理及用法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Java集合的Collection接口和List接口詳解

    Java集合的Collection接口和List接口詳解

    這篇文章主要為大家詳細(xì)介紹了Java集合的Collection接口和List接口,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • springboot獲取profile的操作

    springboot獲取profile的操作

    這篇文章主要介紹了springboot獲取profile的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 基于ScheduledExecutorService的兩種方法(詳解)

    基于ScheduledExecutorService的兩種方法(詳解)

    下面小編就為大家?guī)硪黄赟cheduledExecutorService的兩種方法(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • Intellij IDEA神器居然還有這些小技巧

    Intellij IDEA神器居然還有這些小技巧

    Intellij IDEA真是越用越覺得它強(qiáng)大,它總是在我們寫代碼的時(shí)候,不時(shí)給我們來個(gè)小驚喜,本文給大家主要介紹一些你可能不知道的但是又實(shí)用的小技巧,感興趣的朋友跟隨小編一起看看吧
    2021-01-01
  • Spring Boot2如何構(gòu)建可部署的war包

    Spring Boot2如何構(gòu)建可部署的war包

    這篇文章主要介紹了Spring Boot2如何構(gòu)建可部署的war包,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java多線程之ThreadLocal原理總結(jié)

    Java多線程之ThreadLocal原理總結(jié)

    這篇文章主要介紹了Java多線程ThreadLocal原理,同一個(gè)ThreadLocal所包含的對(duì)象,在不同的Thread中有不同的副本,文章中有詳細(xì)的代碼示例,需要的朋友參考一下
    2023-04-04
  • springMVC中@RequestParam和@RequestPart的區(qū)別

    springMVC中@RequestParam和@RequestPart的區(qū)別

    本文主要介紹了springMVC中@RequestParam和@RequestPart的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06

最新評(píng)論

洱源县| 安庆市| 合作市| 获嘉县| 安徽省| 淳安县| 建瓯市| 翼城县| 贵州省| 麦盖提县| 隆安县| 柳河县| 二连浩特市| 孝昌县| 定边县| 乌鲁木齐市| 武邑县| 宁陕县| 洞口县| 巴塘县| 东乡县| 福清市| 张家川| 汉阴县| 敦煌市| 灌南县| 贺兰县| 丰都县| 东至县| 高碑店市| 西林县| 张北县| 福安市| 临夏市| 吉林省| 台北市| 叙永县| 恭城| 枣庄市| 镇坪县| 台南县|