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

ssm項目改造spring?boot項目完整步驟

 更新時間:2023年04月17日 11:51:39   作者:塵影cylcjsg  
Spring?Boot現(xiàn)在已經(jīng)成為Java開發(fā)領(lǐng)域的一顆璀璨明珠,它本身是包容萬象的,可以跟各種技術(shù)集成,下面這篇文章主要給大家介紹了關(guān)于ssm項目改造spring?boot項目的相關(guān)資料,需要的朋友可以參考下

快速創(chuàng)建 Spring Boot 項目

添加依賴

如果是普通 Maven 項目,需要手動添加。

<!-- 打包方式 jar 包 -->
<packaging>jar</packaging>

<!-- 指定父工程 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.3.RELEASE</version>
</parent>

<dependencies>
    <!-- spring boot Web 包 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- spring boot Test 包 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <!-- Lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>

添加啟動類

如果是普通 Maven 項目,需要手動添加。

@SpringBootApplication
public class xxxApplication {
    public static void main(String[] args) {
        SpringApplication.run(xxxApplication.class, args);
    }
}

拷貝項目代碼

  • 把 src\main\java 中的 java 代碼全部拷貝到新項目中的 src\main\java 里面。
  • 把 src\main\resources 中存放 mapper.xml 的目錄也拷貝到新項目中的 src\main\resources 里面。

下面步驟用什么拷貝什么

配置數(shù)據(jù)庫連接池

添加依賴

<!-- MySQL 驅(qū)動 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

還需要jdbc依賴(事務(wù))

連接池的自動配置方式

application.properties

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql:///數(shù)據(jù)庫庫名?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=admin

此時運行測試獲取的數(shù)據(jù)庫連接池對象可以執(zhí)行成功,并且我們看到了使用的連接池是 Hikari,全稱是 Hikaricp。

其實,在 Spring Boot 2.0 之后,采用的默認連接池就是 Hikari,號稱“史上最快的連接池”,所以我們沒有添加依賴也能直接用,Spring Boot 的自動配置中含有 DataSourceAutoConfiguration 配置類,會先檢查容器中是否已經(jīng)有連接池對象,沒有則會使用默認的連接池,并根據(jù)特定的屬性來自動配置連接池對象,用到的屬性值來源于DataSourceProperties 對象。

配置 Druid 連接池

當(dāng)然如果我們在項目中還是想要使用 Druid 作為連接池也是可以的。只需要添加依賴即可,此時加的是 Druid 的 druid-spring-boot-starter 自動配置包, 里面包含了 DruidDataSourceAutoConfigure 自動配置類,會自動創(chuàng)建 Druid 的連接池對象,所以 Spring Boot 發(fā)現(xiàn)已經(jīng)有連接池對象了,則不會再使用 Hikari。

<!-- druid -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.21</version>
</dependency>

注意:如果添加的依賴是以前那種普通包,只有 Druid 自身的依賴,并不是自動配置包,則需要進行以下配置:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.19</version>
</dependency>

在配置文件中添加參數(shù)

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

所以一般如果已經(jīng)提供了 Spring Boot 相關(guān)的自動配置包,直接使用自動配置的會更方便些。

對于 Hikari 以及 Druid 兩款都是開源產(chǎn)品,阿里的 Druid 有中文的開源社區(qū),交流起來更加方便,并且經(jīng)過阿里多個系統(tǒng)的實驗,也是非常的穩(wěn)定,而 Hikari 是 Spring Boot 2.0 默認的連接池,全世界使用范圍也非常廣,對于大部分業(yè)務(wù)來說,使用哪一款都是差不多的,畢竟性能瓶頸一般都不在連接池。

集成 MyBatis

添加依賴

<!-- Mybatis 集成到 SpringBoot 中的依賴 -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.1</version>
</dependency>

配置 Mapper 對象

掃描 Mapper 接口只要在任意配置類上貼個注解 @MapperScan 并指定掃描的包路徑即可。

@SpringBootApplication
@MapperScan("cn.xxx.mapper")
public class SsmApplication {
    public static void main(String[] args) {
        SpringApplication.run(SsmApplication.class, args);
    }
}

MyBatis配置屬性

在 application.properties 配置以前在 XML 配置了的那些 MyBatis 的屬性,屬性前綴 mybatis。

# 配置別名
mybatis.type-aliases-package=cn.xxx.domain

# 打印 SQL 日志
logging.level.cn.xxx.mapper=trace

事務(wù)管理

添加依賴

<!-- Spring JDBC 和 TX -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

注解方式

直接在業(yè)務(wù)層實現(xiàn)類上或者其方法上直接貼 @Transactional 注解即可。

Spring Boot 自動配置中提供了 TransactionAutoConfiguration 事務(wù)注解自動配置類,引入了事務(wù)的依賴后,可直接使用 @Transactional 注解。

配置切換代理

Spring Boot 默認優(yōu)先選擇 CGLIB 代理,如果需要改為優(yōu)先使用 JDK 代理,需要做以下配置:

spring.aop.proxy-target-class=false

測試驗證

在測試類上添加方法,打印業(yè)務(wù)對象看下其真實類型。

@Test
public void testSave() {
    System.out.println(departmentService.getClass());
}

集成 Web

添加依賴

<!-- spring boot web 啟動器 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

修改端口

在 application.properties 配置,如下:

server.port=80

目錄結(jié)構(gòu)

拷貝靜態(tài)資源及模板文件

靜態(tài)資源的一些處理

  • 默認情況下,Spring Boot 會從 classpath 下的 /static,/public,/resources,/META-INF/resources 下加載靜態(tài)資源。
  • 可以在 application.properties 中配置 spring.resources.staticLocations 屬性來修改靜態(tài)資源的默認加載地址。
  • 因為應(yīng)用是打成 jar 包,所以之前的 src/main/webapp 就作廢了,如果有文件上傳,那么就的必須去配置圖片保存的路徑,因為圖片不能存在jar包中,之前war包方式才可以。
# 告訴 Spring Boot 必須要以怎樣的路徑開頭才能訪問到靜態(tài)資源,這樣做是為了后期如果需要攔截,攔截器可以統(tǒng)一排除掉這些以這個開頭的訪問
spring.mvc.static-path-pattern=/static/**

前端控制器映射路徑配置

在 Spring Boot 自動配置中,WebMvcAutoConfiguration 自動配置類導(dǎo)入了 DispatcherServletAutoConfiguration 配置對象,會自動創(chuàng)建 DispatcherServlet 前端控制器,默認的映射路徑是 /,Spring Boot 多數(shù)用于前后端分離和微服務(wù)開發(fā),默認支持 RESTFul 風(fēng)格,所以一般都是使用默認的即可,不做改動。

# 在匹配模式時是否使用后綴模式匹配(嚴格匹配后綴)一般前后端分離做嚴格區(qū)分時配置
spring.mvc.pathmatch.use-suffix-pattern=true

集成 Thymeleaf

添加依賴

<!-- 引入 Thymeleaf 依賴 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

相關(guān)配置

# Thymelea 模板配置
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html 
spring.thymeleaf.mode=HTML
spring.thymeleaf.encoding=UTF-8
# 上面幾個配置都是默認值不需要配置

# 熱部署文件,頁面不產(chǎn)生緩存,及時更新(開發(fā)時禁用緩存)
spring.thymeleaf.cache=false

修改模板文件

使用 Thymeleaf 的語法替換之前 JSP 中的 EL 表達式和 JSTL。

統(tǒng)一異常處理

框架自帶方式

Spring Boot 默認情況下,會把所有錯誤都交給 BasicErrorController 類完成處理,錯誤的視圖我們放到 classpath:/static/error/ 和 classpath:/templates/error/ 路徑上,HTTP 錯誤狀態(tài)碼就是默認視圖的名稱。如:

  • 出現(xiàn) 404 錯誤 -> classpath:/static/error/404.html
  • 出現(xiàn) 5xx 錯誤 -> classpath:/static/error/5xx.html (因為 5xx 錯誤是后臺錯誤, 原因很多種, 有時有需求需要根據(jù)原因不一樣響應(yīng)不同的內(nèi)容, 甚至響應(yīng)數(shù)據(jù)格式都不一樣,所以我們一般都用統(tǒng)一異常處理,然后再根據(jù)錯誤原因把對應(yīng)內(nèi)容放到頁面上)

控制器增強器方式

自己定義一個控制器增強器,專門用于統(tǒng)一異常處理,該方式一般用于處理 5xx 類錯誤。

@ControllerAdvice 
// 控制器消息,這個注解為了spring幫我們創(chuàng)建對象
public class ExceptionControllerAdvice {
    @ExceptionHandler(RuntimeException.class) // 處理什么類型的異常
    //返回值形式也可以自定義,可以返回modelAndView,
    public String handlException(RuntimeException e, Model model,HandlerMethod m) {
    	//HandlerMethod這個對象存放了spring對控制器的方法和控制器對象
    	//將錯誤信息存入到model中
        e.printStackTrace(); // 記得這行代碼保留,不然項目后臺出異常,開發(fā)工具控制臺看不到錯誤信息
        return "errorView"; // 指定錯誤頁面視圖名稱,然后在頁面從model對象中拿到錯誤信息
    }
}

添加注冊多個攔截器

定義一個配置類,實現(xiàn) WebMvcConfigurer 接口,在 addInterceptors 方法注冊攔截器。

@Configuration
public class MvcJavaConfig implements WebMvcConfigurer {

    @Autowired
    private LoginInterceptor loginInterceptor;
    //攔截器類實現(xiàn)HandlerInterceptor

    @Autowired
    private PermissionInterceptor permissionInterceptor;
    //攔截器類實現(xiàn)HandlerInterceptor

    public void addInterceptors(InterceptorRegistry registry) {
        // 注冊登錄攔截器
        registry.addInterceptor(loginInterceptor)
            // 對哪些資源起過濾作用
            .addPathPatterns("/**")
            // 對哪些資源起排除作用
            .excludePathPatterns("/login", "/static/**");//多個路徑
            
		//多個攔截器
        // 注冊權(quán)限攔截器
        registry.addInterceptor(permissionInterceptor)
            // 對哪些資源起過濾作用
            .addPathPatterns("/**")
            // 對哪些資源起排除作用
            .excludePathPatterns("/login", "/static/**");
    }
}

系統(tǒng)日志

為什么要用日志

  • 比起 System.out.println,日志框架更為靈活,可以把日志的輸出和代碼分離。
  • 日志框架可以方便的定義日志的輸出環(huán)境,控制臺,文件,數(shù)據(jù)庫。
  • 日志框架可以方便的定義日志的輸出格式和輸出級別。

Spring Boot 中的日志介紹

  • Spring Boot 默認已經(jīng)開啟日志,其默認的日志格式為:時間 日志級別 線程ID 線程名稱 日志類 日志說明。
  • Spring Boot 的日志分為:系統(tǒng)日志和應(yīng)用日志。
  • 日志級別,級別越高,輸出的內(nèi)容越少,如果設(shè)置的級別為 info,則 debug 以及 trace 級別的都無法顯示,日志級別由低到高 trace < debug < info < warn < error。
  • Spring Boot 默認選擇 Logback 作為日志框架,也能選擇其他日志框架,但是沒有必要。

由于slf4j是后來出現(xiàn)的日志標準,目的是統(tǒng)一之前很多日志框架的使用方式,對主流的日志框架主動的實現(xiàn)了這個標準,實際就是調(diào)用各日志框架的api

輸出日志

在我們自定義的類中可以使用日志框架來輸出。

方式一

在類中注入一個靜態(tài) Logger 對象,傳入當(dāng)前類的作用是方便輸出日志時可以清晰地看到該日志信息是屬于哪個類的。

private static final Logger log = LoggerFactory.getLogger(當(dāng)前類.class);

方式二

使用 Lombok 提供的 @Slf4j 注解來簡化代碼,其實和方式一的作用是一樣的。

@Slf4j
@Service
public class PermissionServiceImpl implements IPermissionService {}

在需要輸出日志的地方使用日志的輸出方法

log.info(...);
log.error(...);
...
// 輸出日志中有變量可以使用 {} 作為占位符
log.info("刪除id為{}的數(shù)據(jù)", id);

日志級別

日志級別由低到高 trace < debug < info < warn < error。

log.debug("權(quán)限插入成功:{}",expression);
log.info("權(quán)限插入成功:{}",expression);
log.warn("權(quán)限插入成功:{}",expression);

執(zhí)行權(quán)限加載功能后,發(fā)現(xiàn)控制臺出現(xiàn) info 與 warn 的信息,debug 的沒有顯示,原因是因為 Spring Boot 默認的日志級別是 info,所以 debug 低于 info 級別,就不會顯示出來了。

若要修改日志顯示級別,最快速的方式是在 application.properties 配置,配置如下

# 把日志級別修改為 debug,不過我們一般不會更改,除非要調(diào)試找 bug,不然控制臺顯示的內(nèi)容太多也容易亂,下面為全局配置,單路徑配置如打印 SQL 日志 logging.level.cn.xxx.mapper=trace
logging.level.root=debug

Logback 配置文件,日志存入文件中

Logback 框架默認會自動加載 classpath:logback.xml,作為框架的配置文件,在 Spring Boot項目中使用時,還會額外的支持自動加載classpath:logback-spring.xml,在 Spring Boot 項目中推薦使用 logback-spring.xml,功能更強大些。

<?xml version="1.0" encoding="UTF-8"?>
<!--
    scan:開啟日志框架的熱部署,默認值 true 表示開啟
    scanPeriod:熱部署的頻率,默認值 60 second
    debug:設(shè)置輸出框架內(nèi)部的日志,默認值 false
-->
<configuration scan="true" scanPeriod="60 second" debug="false">
    <property name="appName" value="springboot demo" />
    <contextName>${appName}</contextName>
    
    <!-- appender:日志輸出對象,配置不同的類擁有不同的功能
        ch.qos.logback.core.ConsoleAppender:日志輸出到控制臺        
    -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd-HH:mm:ss} %level [%thread]-%logger{35} >> %msg %n</pattern>
     </encoder>
   </appender>
    
    <!-- ch.qos.logback.core.FileAppender:日志輸出到文件中-->
    <appender name="fileAppender" class="ch.qos.logback.core.FileAppender">
        <encoder>
            <pattern>%-4relative [%thread] %level %logger{35} - %msg %n</pattern>
       </encoder>
        <append>true</append> <!-- 是否為在原有文件追加內(nèi)容方式-->
        <file>MyLog.log</file> <!-- 日志存放的文件,也可以指定路徑 -->
   </appender>
    
    
    <!-- 
        root 是項目通用的 logger,一般情況下都是使用 root 配置的日志輸出
        level:按照級別輸出日志,日志級別,級別越高,輸出的內(nèi)容越少
    -->
   <root level="info">
        <appender-ref ref="STDOUT" /> <!-- 日志輸出到控制臺還是存入文件中 -->
    </root>
    
    <!-- 自定義的 logger,用于專門輸出特定包中打印的日志
    <logger name="cn.xxx.crm.mapper" level="trace">
    </logger>
	-->
</configuration>

參考日志格式:

  • %d{yyyy-MM-dd-HH:mm:ss} %level [%thread]-%class:%line >> %msg %n

格式中的標識符組成:

  • %logger{n}:輸出 Logger 對象類名,n 代表長度
  • %class{n}:輸出所在類名
  • %d{pattern} 或者 date{pattern}:輸出日志日期,格式同 Java
  • %L/line:日志所在行號
  • %m/msg:日志內(nèi)容
  • %method:所在方法名稱
  • %p/level:日志級別
  • %thread:所在線程名稱

一般開發(fā)過程,日志記錄到控制臺

實際上線了, 日志一般記錄到文件中

其他功能

修改spring boot啟動打印畫面

Spring Boot 提供了一些擴展點,比如修改 banner:在 resources 根目錄中放入 banner.txt 文件,替換默認的啟動spring打印的字樣。

# application.properties
# 關(guān)閉 banner
spring.main.banner-mode=off 

熱部署插件

除了使用 JRebel 插件(收費)來實現(xiàn)熱部署,還可以使用 Spring Boot 提供的 spring-boot-devtools 包來完成 Springboot 應(yīng)用熱部署,從而實現(xiàn)更改方法內(nèi)代碼和模板文件不需要重啟,只需要點擊編譯即可。

<!-- Spring Boot 熱部署插件 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>

Spring Boot 重啟是 reload 重啟,通過監(jiān)控 classpath 的變化,如果 classpath 中的文件發(fā)生變化,即觸發(fā)重啟。Spring Boot 通過兩個 classpath 來完成 reload,一個 basic classloader 中加載不變的類(jar 包中的類),一個 restart classloader 中加載 classpath 中的類(自己寫的類),重啟的時候,restart classloader 中的類丟棄并重新加載。

下面是相關(guān)的一些配置,一般不用配置

# 默認排除不需要更新的資源
spring.devtools.restart.exclude=static/**,templates/**,public/**       

# 增加額外的排除資源
# 處理默認配置排除之外的
spring.devtools.restart.additional-exclude=public/** 

# 禁用自動重啟
spring.devtools.restart.enabled=false 

切換運行環(huán)境

在實際開發(fā)中,一個系統(tǒng)是有多套運行環(huán)境的,如開發(fā)時有開發(fā)的環(huán)境,測試時有測試的環(huán)境,不同的環(huán)境中,系統(tǒng)的參數(shù)設(shè)置是不同的,如:連接開發(fā)數(shù)據(jù)和測試數(shù)據(jù)庫的 URL 絕對是不同的,那么怎么快速的切換系統(tǒng)運行的環(huán)境呢?我們需要為不同的環(huán)境創(chuàng)建不同的配置文件,如下:

# application-dev.properties
server.port=8081
# application-test.properties
server.port=8082

最后我們在 application.properties 中指定需要使用的環(huán)境即可

# 在 application.properties 中指定需要使用的環(huán)境即可
spring.profiles.active=dev 

在命令行模式下啟動也可以激活: java -jar xxx --spring.profiles.active=dev

總結(jié)

到此這篇關(guān)于ssm項目改造spring boot項目的文章就介紹到這了,更多相關(guān)ssm改造spring boot項目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JAVA中 redisTemplate 和 jedis的配合使用操作

    JAVA中 redisTemplate 和 jedis的配合使用操作

    這篇文章主要介紹了JAVA中 redisTemplate 和 jedis的配合使用操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • springboot如何靜態(tài)加載@configurationProperties

    springboot如何靜態(tài)加載@configurationProperties

    這篇文章主要介紹了springboot如何靜態(tài)加載@configurationProperties,本文一個錯誤案例和成功案例結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • 微信跳一跳刷分java代碼實現(xiàn)

    微信跳一跳刷分java代碼實現(xiàn)

    這篇文章主要介紹了微信跳一跳刷分java代碼實現(xiàn),還為大家分享了java刷微信跳一跳問題集,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 前端dist包放到后端springboot項目下一起打包圖文教程

    前端dist包放到后端springboot項目下一起打包圖文教程

    這篇文章主要介紹了前端dist包放到后端springboot項目下一起打包的相關(guān)資料,具體步驟包括前端打包、將前端文件復(fù)制到后端項目的static目錄、后端打包、驗證部署成功等,需要的朋友可以參考下
    2025-01-01
  • Spring中的FactoryBean實現(xiàn)原理詳解

    Spring中的FactoryBean實現(xiàn)原理詳解

    這篇文章主要介紹了Spring中的FactoryBean實現(xiàn)原理詳解,spring中有兩種類型的Bean,一種是普通的JavaBean,另一種就是工廠Bean(FactoryBean),這兩種Bean都受Spring的IoC容器管理,但它們之間卻有一些區(qū)別,需要的朋友可以參考下
    2024-02-02
  • springboot整合RabbitMQ中死信隊列的實現(xiàn)

    springboot整合RabbitMQ中死信隊列的實現(xiàn)

    死信是無法被消費的消息,產(chǎn)生原因包括消息TTL過期、隊列最大長度達到以及消息被拒絕且不重新排隊,RabbitMQ的死信隊列機制能夠有效防止消息數(shù)據(jù)丟失,適用于訂單業(yè)務(wù)等場景,本文就來介紹一下
    2024-10-10
  • Java 如何通過Magic 魔數(shù)獲取文件類型

    Java 如何通過Magic 魔數(shù)獲取文件類型

    魔數(shù)有很多種定義,這里我們討論的主要是在編程領(lǐng)域的定義,文件的起始幾個字節(jié)的內(nèi)容是固定的,本文給大家介紹Java Magic 魔數(shù)獲取文件類型的相關(guān)知識,感興趣的朋友一起看看吧
    2023-11-11
  • 關(guān)于Nacos配置管理的統(tǒng)一配置管理、自動刷新詳解

    關(guān)于Nacos配置管理的統(tǒng)一配置管理、自動刷新詳解

    這篇文章主要介紹了關(guān)于Nacos配置管理的統(tǒng)一配置管理、自動刷新詳解,Nacos是阿里的一個開源產(chǎn)品,是針對微服務(wù)架構(gòu)中的服務(wù)發(fā)現(xiàn)、配置管理、服務(wù)治理的綜合型解決方案,需要的朋友可以參考下
    2023-05-05
  • Spring的定時任務(wù)@Scheduled源碼詳解

    Spring的定時任務(wù)@Scheduled源碼詳解

    這篇文章主要介紹了Spring的定時任務(wù)@Scheduled源碼詳解,@Scheduled注解是包org.springframework.scheduling.annotation中的一個注解,主要是用來開啟定時任務(wù),本文提供了部分實現(xiàn)代碼與思路,需要的朋友可以參考下
    2023-09-09
  • springboot新建項目jdk只有17/21,無法選中1.8解決辦法

    springboot新建項目jdk只有17/21,無法選中1.8解決辦法

    最近博主也有創(chuàng)建springboot項目,發(fā)現(xiàn)了IntelliJ IDEA在通過Spring Initilizer初始化項目的時候已經(jīng)沒有java8版本的選項了,這里給大家總結(jié)下,這篇文章主要給大家介紹了springboot新建項目jdk只有17/21,無法選中1.8的解決辦法,需要的朋友可以參考下
    2023-12-12

最新評論

永宁县| 广水市| 澄江县| 宁夏| 荥阳市| 平安县| 拜泉县| 合作市| 塔河县| 闵行区| 彰武县| 顺平县| 龙井市| 南江县| 蕲春县| 营山县| 驻马店市| 玉林市| 澄城县| 蕉岭县| 泰宁县| 滦南县| 营山县| 潍坊市| 房产| 马尔康县| 金阳县| 天门市| 鄂尔多斯市| 留坝县| 衡阳市| 高平市| 双牌县| 高安市| 喀什市| 子长县| 锡林郭勒盟| 塔城市| 罗山县| 潞西市| 鹰潭市|