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

SpringBoot啟動慢的5個優(yōu)化技巧分享

 更新時(shí)間:2026年01月08日 09:02:26   作者:帥氣的你  
這篇文章主要為大家詳細(xì)介紹了SpringBoot啟動慢的5個優(yōu)化技巧,本文主要針對的是?1.4/1.5?老版本,希望可以手把手教你把啟動時(shí)間縮短?50%+

引言:還在等 Spring Boot 啟動?可能是你沒優(yōu)化對

很多團(tuán)隊(duì)的核心業(yè)務(wù)系統(tǒng)還在使用 Spring Boot 1.4/1.5 這類早期經(jīng)典版本:

  • 代碼穩(wěn)定、依賴體系成熟、不敢輕易大版本升級;
  • 但一個啟動 30 秒甚至 1 分鐘的老項(xiàng)目,嚴(yán)重拖累日常開發(fā)調(diào)試與部署效率。

實(shí)際排查下來,大部分啟動慢問題,并不是業(yè)務(wù)邏輯本身慢,而是:

  • 自動配置加載了一堆用不到的組件;
  • 包掃描范圍過大;
  • JVM 參數(shù)不合理;
  • 非核心 Bean 提前初始化;
  • 冗余依賴和插件拖后腿。

本文結(jié)合老項(xiàng)目實(shí)戰(zhàn)經(jīng)驗(yàn),總結(jié)了 5 個幾乎“零重構(gòu)”的優(yōu)化點(diǎn)

  • 不改業(yè)務(wù)代碼、不推翻架構(gòu),在原有基礎(chǔ)上就能把啟動時(shí)間輕松縮短 50%+;
  • 特別適用于:老項(xiàng)目維護(hù)、開發(fā)環(huán)境提速、生產(chǎn)部署優(yōu)化等場景。

一、優(yōu)化點(diǎn) 1:禁用不必要的自動配置(核心)

1.1 問題原因

在 Spring Boot 1.4/1.5 中,spring-boot-autoconfigure 會根據(jù)類路徑和配置自動裝配大量組件,比如:

  • 數(shù)據(jù)源(多數(shù)據(jù)源、JPA、事務(wù))
  • Redis、緩存、消息中間件
  • 郵件發(fā)送、模板引擎、Actuator 等

問題在于:只要依賴在類路徑上,Spring Boot 就會嘗試自動配置 Bean。
即使你項(xiàng)目中完全沒用到這些功能,也會:

  • 掃描大量配置類;
  • 創(chuàng)建并初始化對應(yīng)的 Bean;
  • 甚至還會嘗試連數(shù)據(jù)庫、拉起連接池。

最終結(jié)果:啟動階段 Bean 初始化數(shù)量暴增,耗時(shí)顯著上升。

1.2 操作步驟:通過exclude精準(zhǔn)禁用無用自動配置

步驟 1:打開 debug 日志,查看生效的自動配置

application.properties 中增加:

debug=true

啟動后控制臺會輸出類似:

=========================
AUTO-CONFIGURATION REPORT
=========================

Positive matches:
   DataSourceAutoConfiguration matched ...
   RedisAutoConfiguration matched ...
   MailSenderAutoConfiguration matched ...
   ...

Positive matches 部分就是當(dāng)前真正生效的自動配置列表。結(jié)合業(yè)務(wù)實(shí)際,挑出確定 完全不用 的配置類。

步驟 2:使用@SpringBootApplication(exclude = …)排除

在主啟動類上排除這些自動配置,例如:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
import org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration;

@SpringBootApplication(
    exclude = {
        DataSourceAutoConfiguration.class,
        HibernateJpaAutoConfiguration.class,
        RedisAutoConfiguration.class,
        MailSenderAutoConfiguration.class
    }
)
public class LegacyApplication {

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

如果你只在某些 profile 下需要這些配置,也可以配合 @ConditionalOnProperty 等方式做更細(xì)粒度控制,這里先給出最直接的方式。

1.3 原理說明

Spring Boot 啟動過程中的大頭工作包括:

  • 掃描 XXXAutoConfiguration 類;
  • 解析條件注解(@ConditionalOnClass、@ConditionalOnMissingBean 等);
  • 注冊對應(yīng)的 BeanDefinition,實(shí)例化并注入依賴。

通過 exclude 排除無用自動配置:

  • 這些自動配置類根本不會被處理;
  • 對應(yīng)的 Bean 不會被創(chuàng)建,不再參與依賴注入與生命周期管理;
  • 啟動階段整體要初始化的 Bean 總數(shù)明顯減少,從而大幅壓縮啟動時(shí)間。

1.4 注意事項(xiàng)

注意:排除前必須確認(rèn)業(yè)務(wù)確實(shí)不依賴該組件

如果誤排除正在使用的數(shù)據(jù)源、事務(wù)或緩存相關(guān)自動配置,可能出現(xiàn)啟動失敗或運(yùn)行時(shí)異常

生產(chǎn)環(huán)境中建議先在測試環(huán)境驗(yàn)證:

  • 啟動是否正常;
  • 核心業(yè)務(wù)回歸是否通過。

二、優(yōu)化點(diǎn) 2:縮小包掃描范圍

2.1 問題原因

Spring Boot 默認(rèn)會:

  • 掃描主類所在包及其子包下的所有類;
  • 包括 Controller、Service、Repository、配置類、工具類、甚至某些測試或無用類。

大型老項(xiàng)目中,經(jīng)常出現(xiàn)這種情況:

  • com.company.project 作為頂級包,下面掛了大量歷史包結(jié)構(gòu);
  • 很多模塊早已棄用,但類文件仍然存在;
  • 部分第三方集成 demo 代碼也被一起掃描。

結(jié)果是:類路徑掃描和 Bean 定義解析工作量明顯增大,啟動開銷增加。

2.2 操作步驟:精確指定需要掃描的業(yè)務(wù)包

步驟 1:使用scanBasePackages明確核心業(yè)務(wù)包

在主啟動類中指定掃描范圍,例如:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication(
    scanBasePackages = {
        "com.company.project.api",
        "com.company.project.service",
        "com.company.project.repository",
        "com.company.project.config"
    }
)
public class LegacyApplication {

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

這樣,Spring 只會在上述幾個包中查找:

  • @Controller / @RestController
  • @Service / @Component
  • @Repository
  • 以及其他 Spring 管理的 Bean。

步驟 2:對非核心模塊使用@Import手動引入

如果某些第三方集成、獨(dú)立模塊不想被大范圍掃描,可以:

  • 將其配置類從掃描路徑中移除;
  • 使用 @Import 在主配置類中顯式導(dǎo)入。

示例:

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

@Configuration
@Import({
    ThirdPartyDataSourceConfig.class,
    ExternalJobSchedulerConfig.class
})
public class ExtraConfig {
}

主啟動類仍然只掃描業(yè)務(wù)核心包,而額外的集成模塊通過 @Import 精準(zhǔn)引入。

2.3 原理說明

包掃描階段主要做兩件事情:

  • 掃描所有類文件、解析注解元數(shù)據(jù);
  • 為符合條件的類注冊 BeanDefinition。

縮小掃描范圍帶來的好處:

  • 掃描的類文件數(shù)量大幅減少;
  • 無用的測試類、demo 類不會再參與 Bean 解析;
  • 減少 I/O 和反射操作;
  • 間接減少自動配置和條件匹配的觸發(fā)次數(shù)。

2.4 注意事項(xiàng)

注意:掃描包配置不當(dāng)會導(dǎo)致 Bean 漏掃

如果某些核心業(yè)務(wù) Bean 所在包沒被包含進(jìn)來,會出現(xiàn)啟動失敗、依賴找不到、Controller 不生效等問題;

調(diào)整掃描范圍后,建議:

  • 全量跑一次關(guān)鍵接口回歸;
  • 對常用 URL 做一次冒煙測試。

三、優(yōu)化點(diǎn) 3:優(yōu)化 JVM 啟動參數(shù)(適配 JDK 8)

3.1 問題原因

Spring Boot 1.4/1.5 多數(shù)運(yùn)行在 JDK 8 上,如果 JVM 參數(shù)不合理,會導(dǎo)致:

  • 內(nèi)存分配頻繁、Full GC 頻繁;
  • 類驗(yàn)證、JIT 預(yù)熱過程緩慢;
  • 導(dǎo)致整體啟動時(shí)間被 JVM 本身拖慢。

老項(xiàng)目常見問題:

  • 使用默認(rèn) JVM 參數(shù);
  • 線上、線下參數(shù)混用;
  • 誤用了不適配版本的 GC 策略。

3.2 推薦 JVM 參數(shù)示例(JDK 8)

開發(fā)環(huán)境(以啟動速度優(yōu)先)

java \
  -Xms512m \
  -Xmx512m \
  -XX:MetaspaceSize=128m \
  -XX:MaxMetaspaceSize=256m \
  -XX:+UseCompressedOops \
  -XX:+UseG1GC \
  -XX:MaxGCPauseMillis=200 \
  -XX:+PrintGCDetails \
  -XX:+PrintGCDateStamps \
  -Xloggc:logs/gc.log \
  -Xverify:none \
  -Dspring.profiles.active=dev \
  -jar legacy-app.jar

關(guān)鍵參數(shù)說明:

  • -Xms/-Xmx:固定堆大小,避免頻繁擴(kuò)容;
  • MetaspaceSize/MaxMetaspaceSize:控制類元數(shù)據(jù)空間,防止過小頻繁 GC;
  • UseG1GC:適合大部分服務(wù)場景,GC 暫??煽?;
  • Xverify:none關(guān)閉類驗(yàn)證,加快類加載(僅推薦開發(fā)環(huán)境)。

生產(chǎn)環(huán)境(兼顧穩(wěn)定性)

java \
  -Xms2g \
  -Xmx2g \
  -XX:MetaspaceSize=256m \
  -XX:MaxMetaspaceSize=512m \
  -XX:+UseCompressedOops \
  -XX:+UseG1GC \
  -XX:MaxGCPauseMillis=200 \
  -XX:+PrintGCDetails \
  -XX:+PrintGCDateStamps \
  -Xloggc:/data/logs/gc.log \
  -Dspring.profiles.active=prod \
  -jar legacy-app.jar

生產(chǎn)環(huán)境建議:

  • 不使用 -Xverify:none,保證類驗(yàn)證安全性;
  • 堆大小根據(jù)服務(wù)負(fù)載適當(dāng)增大,避免 OOM;
  • 保留 GC 日志,便于問題排查。

3.3 原理說明

JVM 啟動階段涉及:

  • 類加載、字節(jié)碼驗(yàn)證;
  • JIT 編譯預(yù)熱;
  • 堆與元空間初始化。

合理配置 JVM 參數(shù)可以:

  • 減少類驗(yàn)證耗時(shí)(開發(fā)環(huán)境);
  • 避免因堆/元空間過小導(dǎo)致的頻繁 GC;
  • 提高內(nèi)存分配與回收效率,間接縮短啟動時(shí)間。

3.4 注意事項(xiàng)

注意:-Xverify:none 不建議在生產(chǎn)環(huán)境使用

  • 關(guān)閉類驗(yàn)證會略微提升啟動速度,但也可能掩蓋某些類加載問題;
  • 生產(chǎn)環(huán)境應(yīng)優(yōu)先保證穩(wěn)定性與安全性,僅在開發(fā)/測試環(huán)境使用此項(xiàng)。

四、優(yōu)化點(diǎn) 4:延遲初始化非核心 Bean

4.1 問題原因

默認(rèn)情況下,Spring 在啟動時(shí)會:

  • 將所有單例 Bean 全部創(chuàng)建并初始化完畢;
  • 包括定時(shí)任務(wù)、異步服務(wù)、緩存預(yù)熱、報(bào)表生成、第三方對接等。

對于很多老項(xiàng)目來說,這些 Bean:

  • 并非每次啟動都立即用到;
  • 甚至只在某些功能入口才會首次訪問。

但它們卻在啟動階段“搶占時(shí)間”,導(dǎo)致整體啟動明顯偏慢。

4.2 操作步驟 1:全局延遲初始化(慎用)

application.properties 中配置:

spring.main.lazy-initialization=true

Spring Boot 1.4/1.5 沒有這個統(tǒng)一屬性,可以通過 自定義 BeanFactoryPostProcessor 或升級到 2.x 后使用。若你已做了小版本升級(如維護(hù)分支升級到 2.1/2.3),可以直接用此配置。對于原生 1.4/1.5,可優(yōu)先考慮“局部延遲初始化”。

4.3 操作步驟 2:局部延遲初始化(推薦)

非核心、非強(qiáng)依賴鏈上的 Bean 使用 @Lazy

import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;

@Service
@Lazy
public class ReportGenerateService {

    public void generateDailyReport() {
        // 生成報(bào)表的耗時(shí)邏輯
    }
}

也可以在依賴注入處使用:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;

@Service
public class OrderService {

    @Autowired
    @Lazy
    private ReportGenerateService reportGenerateService;

    public void createOrder() {
        // 下單邏輯
        // 只有真正需要生成報(bào)表時(shí),才會初始化 ReportGenerateService
    }
}

4.4 原理說明

  • 默認(rèn):單例 Bean 在容器刷新階段一次性創(chuàng)建完畢;
  • 延遲初始化:Bean 第一次被訪問時(shí)才創(chuàng)建。

將非核心 Bean 延遲初始化,可以:

  • 將原本啟動階段的初始化壓力,拆散到運(yùn)行期間;
  • 明顯縮短“應(yīng)用就緒時(shí)間”(從啟動命令到可對外提供核心服務(wù)的時(shí)間);
  • 尤其適合一些“偶發(fā)調(diào)用”的后臺任務(wù)、報(bào)表、同步 JOB 等。

4.5 注意事項(xiàng)

注意:全局延遲初始化可能隱藏啟動期異常

某些 Bean 的配置錯誤,僅在其首次訪問時(shí)才會拋出異常;

如果這些 Bean 是核心功能的一部分,可能在系統(tǒng)運(yùn)行一段時(shí)間后才拋出問題;

建議:

  • 優(yōu)先對明確非核心的 Bean 使用 @Lazy;
  • 若使用全局 lazy,務(wù)必在測試環(huán)境做一次“功能全量走一遍”的回歸。

五、優(yōu)化點(diǎn) 5:移除冗余依賴與插件

5.1 問題原因

老項(xiàng)目演進(jìn)多年后,典型現(xiàn)象是:

  • POM 中堆滿歷史依賴:老日志框架、老數(shù)據(jù)庫驅(qū)動、廢棄組件;
  • 多個 starter 自動帶了一堆間接依賴;
  • Maven 插件配置復(fù)雜,在打包/啟動時(shí)執(zhí)行不必要的任務(wù)。

這些冗余依賴和插件會導(dǎo)致:

  • 類路徑膨脹、類加載數(shù)量暴增;
  • 自動配置命中更多分支;
  • 打包和啟動過程執(zhí)行多余檢查或增強(qiáng)步驟。

5.2 操作步驟 1:用dependency:tree分析依賴

在項(xiàng)目根目錄執(zhí)行:

mvn dependency:tree > dependency-tree.txt

打開 dependency-tree.txt,重點(diǎn)關(guān)注:

  • 未使用的 starter(如 spring-boot-starter-mail、spring-boot-starter-redis 等);
  • 重復(fù)版本依賴(多版本 commons-*);
  • 不再使用的中間件 client 包。

對于明確不需要的依賴,可在 pom.xml 中排除,例如:

1)排除內(nèi)置 Tomcat(改用外置容器時(shí)):

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <!-- 使用外部容器時(shí)可以去掉內(nèi)嵌容器相關(guān)依賴 -->
</dependencies>

2)排除不必要的自動配置模塊:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
        </exclusion>
    </exclusions>
</dependency>

5.3 操作步驟 2:精簡spring-boot-maven-plugin配置

典型的插件配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>1.5.22.RELEASE</version>
            <configuration>
                <mainClass>com.company.project.LegacyApplication</mainClass>
                <!-- 如果不需要,關(guān)閉某些額外的 repackage 行為或自定義 layout -->
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

建議:

  • 若未使用自定義 layout 或不依賴某些高級特性,不要再額外配置多余的 transformer;
  • 構(gòu)建 pipeline 中避免在每次啟動前都做 clean package,而是:開發(fā)環(huán)境更多使用 IDE 直接運(yùn)行 main 方法。

5.4 原理說明

  • 類路徑上的 jar 越多,啟動階段的掃描、類加載、資源查找就越重;
  • 多余的 starter+自動配置會進(jìn)一步放大自動裝配的工作量;
  • 復(fù)雜的 Maven 插件在構(gòu)建階段做的工作越多,得到可運(yùn)行包的時(shí)間就越長。

清理冗余依賴與插件的本質(zhì),就是減少“項(xiàng)目的體重”。

5.5 注意事項(xiàng)

注意:依賴移除/排除前要確認(rèn)影響范圍

使用 mvn dependency:analyze 輔助分析未使用依賴,但結(jié)果僅供參考

移除或排除依賴后,請務(wù)必:

  • 重新編譯,確保無編譯錯誤;
  • 跑一遍基礎(chǔ)集成測試,防止運(yùn)行時(shí) ClassNotFoundException

六、優(yōu)化效果驗(yàn)證:如何量化“到底快了多少”

做完優(yōu)化,如果沒有數(shù)據(jù)支撐,很難說服團(tuán)隊(duì)。這里給出兩種簡單實(shí)用的驗(yàn)證方式。

6.1 在main方法中添加啟動計(jì)時(shí)日志

在主啟動類中加入簡單計(jì)時(shí)代碼:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class LegacyApplication {

    public static void main(String[] args) {
        long start = System.currentTimeMillis();
        SpringApplication.run(LegacyApplication.class, args);
        long end = System.currentTimeMillis();
        System.out.println(">>> Application started in " + (end - start) + " ms <<<");
    }
}

每次啟動時(shí),控制臺會打印:

>>> Application started in 12345 ms <<<

你可以:

  • 記錄優(yōu)化前后的多次啟動耗時(shí);
  • 在不同機(jī)器/環(huán)境下對比,得到一個相對可觀的提升比例。

6.2 使用 Spring Boot Actuator 分析 Bean 初始化耗時(shí)

如果項(xiàng)目中已集成 Actuator,可以啟用相關(guān)端點(diǎn)。

1)POM 中引入依賴(如尚未添加)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2)在配置中開放必要端點(diǎn)(以 1.5.x 為例)

management.security.enabled=false
endpoints.metrics.enabled=true
endpoints.beans.enabled=true

然后訪問:

  • /metrics:查看應(yīng)用層面的指標(biāo);
  • /beans:查看 Bean 列表,結(jié)合日志或監(jiān)控記錄啟動階段 Bean 創(chuàng)建的時(shí)間分布。

Tip: 在 2.x 中可以借助更多細(xì)粒度的指標(biāo)(如 startup 相關(guān)指標(biāo))進(jìn)行可視化分析。

七、總結(jié)與拓展

7.1 5 個優(yōu)化點(diǎn)的實(shí)戰(zhàn)優(yōu)先級

在不做大規(guī)模重構(gòu)、不升級大版本的前提下,可以按下面的優(yōu)先級落地執(zhí)行:

  • 禁用不必要的自動配置(收益最高,改動小,立竿見影);
  • 縮小包掃描范圍(控制掃描粒度,防止歷史垃圾代碼拖累啟動);
  • 延遲初始化非核心 Bean(讓啟動階段更“瘦身”,核心功能先跑起來);
  • JVM 參數(shù)優(yōu)化(中長期收益可觀,需結(jié)合環(huán)境調(diào)優(yōu));
  • 移除冗余依賴與插件(治理項(xiàng)目“技術(shù)債”,順帶給后續(xù)升級打基礎(chǔ))。

配合這 5 個優(yōu)化點(diǎn),實(shí)踐中老項(xiàng)目啟動時(shí)間從 30 秒+ 壓縮到 10~15 秒 是完全可以做到的。

7.2 拓展建議

逐步升級到 Spring Boot 2.x

  • 新版本在自動配置、啟動性能、監(jiān)控指標(biāo)等方面都有明顯優(yōu)化;
  • 可考慮先引入兼容性分支,小步升級到 2.1/2.3 等長期維護(hù)版本。

引入 Spring Boot DevTools 提升開發(fā)體驗(yàn)

  • 支持自動重啟、靜態(tài)資源熱加載;
  • 與 IDE 配合使用,可以極大縮短“改代碼→看效果”的閉環(huán)時(shí)間。

建議:老項(xiàng)目的性能治理,要把“啟動時(shí)間優(yōu)化”納入整體技術(shù)債清單

  • 與依賴升級、JDK 升級、日志體系重構(gòu)等一起規(guī)劃;
  • 避免每次都是臨時(shí)救火,而是有節(jié)奏地演進(jìn)。

以上就是SpringBoot啟動慢的5個優(yōu)化技巧分享的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot啟動優(yōu)化的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringBoot獲取配置信息的三種方式總結(jié)

    SpringBoot獲取配置信息的三種方式總結(jié)

    這篇文章給大家介紹了SpringBoot獲取配置信息的三種方式,@Value屬性值注入,綁定配置類和通過 environment獲取這三種方式,文中通過代碼示例給大家介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-01-01
  • Springmvc基于fastjson實(shí)現(xiàn)導(dǎo)包及配置文件

    Springmvc基于fastjson實(shí)現(xiàn)導(dǎo)包及配置文件

    這篇文章主要介紹了Springmvc基于fastjson實(shí)現(xiàn)導(dǎo)包及配置文件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • xml與Java對象的轉(zhuǎn)換詳解

    xml與Java對象的轉(zhuǎn)換詳解

    這篇文章主要介紹了xml與Java對象的轉(zhuǎn)換詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • 深入淺出理解Java泛型的使用

    深入淺出理解Java泛型的使用

    這篇文章主要介紹了深入淺出理解Java泛型的使用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Mybatis高級映射、動態(tài)SQL及獲得自增主鍵的解析

    Mybatis高級映射、動態(tài)SQL及獲得自增主鍵的解析

    MyBatis 本是apache的一個開源項(xiàng)目iBatis, 2010年這個項(xiàng)目由apache software foundation 遷移到了google code,并且改名為MyBatis。這篇文章主要介紹了Mybatis高級映射、動態(tài)SQL及獲得自增主鍵的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • Java實(shí)現(xiàn)基本數(shù)據(jù)類型與byte數(shù)組相互轉(zhuǎn)換

    Java實(shí)現(xiàn)基本數(shù)據(jù)類型與byte數(shù)組相互轉(zhuǎn)換

    在編程中,尤其是在網(wǎng)絡(luò)通信、文件讀寫等場景下,經(jīng)常需要將基本數(shù)據(jù)類型(如int、long、double等)轉(zhuǎn)換為字節(jié)數(shù)組(byte?array),本文將詳細(xì)介紹Java中如何實(shí)現(xiàn)這些轉(zhuǎn)換,感興趣的可以了解下
    2025-12-12
  • SpringBoot接收參數(shù)的8種方式示例詳解

    SpringBoot接收參數(shù)的8種方式示例詳解

    這篇文章主要介紹了SpringBoot接收參數(shù)的8種方式,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • Mac下設(shè)置Java默認(rèn)版本的方法

    Mac下設(shè)置Java默認(rèn)版本的方法

    今天工作的時(shí)候發(fā)現(xiàn)了一個錯誤,提示java版本太低,無法啟動!想起自己裝過高版本的Java,但是卻沒有默認(rèn)啟動,從網(wǎng)上找了一些資料,整理下現(xiàn)在分享給大家,有需要的可以參考借鑒。
    2016-10-10
  • 從基礎(chǔ)轉(zhuǎn)換與高級設(shè)置詳解Java中PDF轉(zhuǎn)換為Excel的完整指南

    從基礎(chǔ)轉(zhuǎn)換與高級設(shè)置詳解Java中PDF轉(zhuǎn)換為Excel的完整指南

    將 PDF 轉(zhuǎn)換為 Excel 是一個常見需求,本文將展示如何使用 Java 將 PDF 文件轉(zhuǎn)換為 Excel,并提供自定義設(shè)置以優(yōu)化復(fù)雜 PDF 的轉(zhuǎn)換效果,感興趣的小伙伴了解一下
    2026-03-03
  • PowerJob的WorkerHealthReporter工作流程源碼解讀

    PowerJob的WorkerHealthReporter工作流程源碼解讀

    這篇文章主要為大家介紹了PowerJob的WorkerHealthReporter工作流程源碼解讀,
    2023-12-12

最新評論

务川| 汕头市| 黄平县| 弋阳县| 广汉市| 墨江| 岢岚县| 贵州省| 菏泽市| 忻城县| 峡江县| 罗定市| 宁城县| 盘山县| 奎屯市| 华坪县| 广东省| 宁陕县| 乡城县| 宁城县| 景泰县| 凤冈县| 青龙| 太谷县| 黔西| 金乡县| 江安县| 叶城县| 迁安市| 丰城市| 大连市| 长泰县| 凭祥市| 汝阳县| 揭阳市| 博乐市| 福鼎市| 简阳市| 惠水县| 花莲县| 兖州市|