SpringBoot分離打Jar包的兩種配置方式
SpringBoot分離打Jar包的兩種方式
方式一:基于maven-jar-plugin
此方式基于這個(gè)小伙伴的配置改的:http://www.dhdzp.com/article/188606.htm
注意
- 這種方式打包出來(lái)的Jar基于插件提供的類(lèi)加載器啟動(dòng):
org.springframework.boot.loader.PropertiesLauncher - 所有依賴(lài)包(包括systemScope),會(huì)通過(guò)插件
maven-dependency-plugin自動(dòng)復(fù)制到lib目錄 - 所有資源文件,會(huì)通過(guò)插件
maven-resources-plugin自動(dòng)復(fù)制到config目錄 - 此方式打包后,需要指定參數(shù)啟動(dòng)
-Dloader.path=lib路徑,config路徑 - 打包完后部署需要的文件清單:(在
target/目錄下都可以看到)config/**:所有resources下的資源文件lib/**:所有l(wèi)ib包,包括本地依賴(lài)xxx.jar:應(yīng)用Jar
- 運(yùn)行:
java -Dloader.path=lib,config -Dspring.profiles.active=dev -jar main.jar
簡(jiǎn)略版配置
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<properties>
<!--依賴(lài)輸出目錄-->
<lib-path>lib</lib-path>
<!--配置文件輸出目錄-->
<config-path>config</config-path>
<!--jar包名稱(chēng)-->
<final-name>xxx</final-name>
<!--指定啟動(dòng)類(lèi)-->
<main-class>org.jeecg.JeecgSystemApplication</main-class>
</properties>
<build>
<!--項(xiàng)目名稱(chēng)-->
<finalName>${final-name}</finalName>
<plugins>
<!--定義項(xiàng)目的編譯環(huán)境-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!--maven的測(cè)試用例插件,建議跳過(guò)。-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<!--這個(gè)是springboot的默認(rèn)編譯插件,他默認(rèn)會(huì)把所有的文件打包成一個(gè)jar-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<!-- 打自定義的JAR包 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<!-- MANIFEST.MF 中 Class-Path 加入前綴 -->
<classpathPrefix>${lib-path}/</classpathPrefix>
<!-- jar包不包含唯一版本標(biāo)識(shí) -->
<useUniqueVersions>false</useUniqueVersions>
<!--指定入口類(lèi) -->
<mainClass>${main-class}</mainClass>
</manifest>
<manifestEntries>
<!--MANIFEST.MF 中 Class-Path 加入資源文件目錄 -->
<!--本地依賴(lài),多個(gè)需要使用空格隔開(kāi)-->
<Class-Path>./${config-path}/ lib/zwdd-1.2.0.jar lib/spire-10.jar</Class-Path>
</manifestEntries>
</archive>
<outputDirectory>${project.build.directory}</outputDirectory>
</configuration>
</plugin>
<!-- 該插件的作用是用于復(fù)制依賴(lài)的jar包到指定的文件夾里 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/${lib-path}/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- 該插件的作用是用于復(fù)制指定的文件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<!-- 復(fù)制配置文件 -->
<execution>
<id>copy-resources</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<resources>
<!--復(fù)制資源文件到外部,注意這里先不做filtering處理,防止某些靜態(tài)文件損壞-->
<resource>
<filtering>false</filtering>
<directory>src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
</resource>
<!--僅針對(duì)yml配置文件filtering處理(占位符@@等)-->
<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
<includes>
<include>*.yml</include>
</includes>
</resource>
</resources>
<outputDirectory>${project.build.directory}/${config-path}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<!--包含java類(lèi)路徑下的資源文件(mybatis的xml等)-->
<resource>
<directory>src/main/java</directory>
<filtering>false</filtering>
<includes>
<include>**/*.xml</include>
<include>**/*.json</include>
<include>**/*.ftl</include>
</includes>
</resource>
<!--排除jar包內(nèi)的所有resources配置文件-->
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<excludes>
<exclude>**/*</exclude>
</excludes>
</resource>
<!--注: 為了能在IDEA中跑起來(lái),需要將所有yml配置文件打進(jìn)jar包,filtering必須開(kāi)啟(處理占位符等操作)-->
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>*.yml</include>
</includes>
</resource>
</resources>
</build>
</project>
完整配置(帶部分注釋)
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-boot-parent</artifactId>
<version>2.4.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jeecg-boot-module-system</artifactId>
<repositories>
<repository>
<id>aliyun</id>
<name>aliyun Repository</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.spire</groupId>
<artifactId>spire</artifactId>
<version>10</version>
<scope>system</scope>
<systemPath>${project.basedir}/../lib/Spire.Doc.jar</systemPath>
</dependency>
<dependency>
<groupId>com.zwdd.api</groupId>
<artifactId>zwdd</artifactId>
<version>1.2.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/../lib/zwdd-sdk-java-1.2.0.jar</systemPath>
</dependency>
</dependencies>
<properties>
<!--依賴(lài)輸出目錄-->
<lib-path>lib</lib-path>
<!--springboot默認(rèn)打包輸出目錄-->
<jar-path>jar</jar-path>
<!--配置文件輸出目錄-->
<config-path>config</config-path>
<!--jar包名稱(chēng)-->
<final-name>xxx</final-name>
<!--指定啟動(dòng)類(lèi)-->
<main-class>org.jeecg.JeecgSystemApplication</main-class>
</properties>
<build>
<!--項(xiàng)目名稱(chēng)-->
<finalName>${final-name}</finalName>
<plugins>
<!--定義項(xiàng)目的編譯環(huán)境-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!--maven的測(cè)試用例插件,建議跳過(guò)。-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<!--這個(gè)是springboot的默認(rèn)編譯插件,他默認(rèn)會(huì)把所有的文件打包成一個(gè)jar,注意這里打包出來(lái)不會(huì)包含systemScope的jar包,有需要的話(huà)得在最后的resources里配置-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<!--這里僅展示插件作用,直接跳過(guò)此插件-->
<skip>true</skip>
<mainClass>${main-class}</mainClass>
<fork>true</fork>
<addResources>true</addResources>
<!--指定激活的配置文件application-xxx.yml-->
<profiles>${profile.name}</profiles>
<outputDirectory>${project.build.directory}/${jar-path}</outputDirectory>
</configuration>
</plugin>
<!-- 打自定義的JAR包 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<!-- 不打包資源文件(配置文件和依賴(lài)包分開(kāi)),這里配置的資源排除,僅在*.xml這類(lèi)文件通配符篩選生效,因此不在這里處理 -->
<excludes>
<!--這種文件方式匹配可以生效-->
<!--<exclude>*.yml</exclude>-->
<!--下面這種方式配置是無(wú)效的,見(jiàn):https://stackoverflow.com/questions/4113697/in-maven-how-to-exclude-resources-from-the-generated-jar-->
<!--上述問(wèn)題鏈接中有此描述:<exclude>src/test/resources/**</exclude> doesn't work. Exclude will be applied on jar final path and should be <exclude>*.properties</exclude>-->
<!--<exclude>src/main/resources/**</exclude>-->
</excludes>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<!-- MANIFEST.MF 中 Class-Path 加入前綴 -->
<classpathPrefix>${lib-path}/</classpathPrefix>
<!-- jar包不包含唯一版本標(biāo)識(shí) -->
<useUniqueVersions>false</useUniqueVersions>
<!--指定入口類(lèi) -->
<mainClass>${main-class}</mainClass>
</manifest>
<manifestEntries>
<!--MANIFEST.MF 中 Class-Path 加入資源文件目錄 -->
<!--本地依賴(lài),多個(gè)需要使用空格隔開(kāi)-->
<Class-Path>./${config-path}/ lib/zwdd-1.2.0.jar lib/spire-10.jar</Class-Path>
</manifestEntries>
</archive>
<outputDirectory>${project.build.directory}</outputDirectory>
</configuration>
</plugin>
<!-- 該插件的作用是用于復(fù)制依賴(lài)的jar包到指定的文件夾里 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<!--這里可以手動(dòng)添加構(gòu)建id,但默認(rèn)是全打包就不需要了-->
<!--<includeArtifactIds>xxxx</includeArtifactIds>-->
<!--默認(rèn)包含所有scope,因此本地的依賴(lài)也正常復(fù)制-->
<!--<includeScope>system</includeScope>-->
<outputDirectory>${project.build.directory}/${lib-path}/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- 該插件的作用是用于復(fù)制指定的文件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<!-- 復(fù)制配置文件 -->
<execution>
<id>copy-resources</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<resources>
<!--復(fù)制資源文件到外部,注意這里先不做filtering處理,防止某些靜態(tài)文件損壞-->
<resource>
<filtering>false</filtering>
<directory>src/main/resources</directory>
<includes>
<!--<include>*.yml</include>-->
<!--把所有resources目錄下的資源文件復(fù)制出來(lái)-->
<include>**/*</include>
</includes>
</resource>
<!--僅針對(duì)yml配置文件filtering處理(占位符@@等)-->
<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
<includes>
<include>*.yml</include>
</includes>
</resource>
</resources>
<outputDirectory>${project.build.directory}/${config-path}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<!--手動(dòng)處理資源文件,這里的操作都是針對(duì)最終打出的jar包內(nèi)部文件的進(jìn)行引入、篩選、過(guò)濾等等,默認(rèn)文件都打進(jìn)jar包內(nèi)部的根路徑下,因此前面的插件[maven-jar-plugin]中需要配置相對(duì)路徑-->
<!--具體路徑在這里: /project/build/plugins/[maven-jar-plugin]/configuration/archive/manifestEntries/Class-Path 添加classpath:. (注意和其它配置以空格分開(kāi))-->
<resources>
<!--包含java類(lèi)路徑下的資源文件(mybatis的xml等)-->
<resource>
<directory>src/main/java</directory>
<filtering>false</filtering>
<includes>
<include>**/*.xml</include>
<include>**/*.json</include>
<include>**/*.ftl</include>
</includes>
</resource>
<!--排除jar包內(nèi)的所有resources配置文件-->
<resource>
<directory>src/main/resources</directory>
<!--filtering會(huì)做處理配置文件@@占位符等操作,但是不排除某些文件的話(huà)可能導(dǎo)致壓縮損壞-->
<filtering>false</filtering>
<excludes>
<exclude>**/*</exclude>
</excludes>
</resource>
<!--注: 上述配置已經(jīng)能夠正常分離所有配置、外部依賴(lài)、工程代碼,啟動(dòng)命令:java -jar xxx.jar-->
<!--注: 但是工程打包后,你會(huì)發(fā)現(xiàn)IDEA上跑不起來(lái)(target/classes目錄下沒(méi)有配置文件)-->
<!--注: 這里嘗試過(guò)在IDEA啟動(dòng)app時(shí)指定JVM參數(shù)(但是沒(méi)有用,誰(shuí)研究過(guò)可以說(shuō)下): -Dloader.path=lib,config-->
<!--注: 為了能在IDEA中跑起來(lái),需要將所有yml配置文件打進(jìn)jar包,filtering必須開(kāi)啟(處理占位符等操作)-->
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>*.yml</include>
</includes>
</resource>
<!--本地依賴(lài)打進(jìn)jar包,這個(gè)配置是配合spring-boot-maven-plugin插件使用的-->
<!--<resource>-->
<!-- <directory>../lib/crack</directory>-->
<!-- <targetPath>BOOT-INF/lib/</targetPath>-->
<!-- <includes><include>**/*.jar</include></includes>-->
<!--</resource>-->
<!--<resource>-->
<!-- <directory>../lib</directory>-->
<!-- <targetPath>BOOT-INF/lib/</targetPath>-->
<!-- <includes><include>*.jar</include></includes>-->
<!--</resource>-->
</resources>
</build>
</project>方式二:基于spring-boot-maven-plugin
注意
- 這種方式打包出來(lái)的Jar基于插件提供的類(lèi)加載器啟動(dòng):
org.springframework.boot.loader.PropertiesLauncher - 所有依賴(lài)包(包括systemScope),會(huì)通過(guò)插件
maven-dependency-plugin自動(dòng)復(fù)制到lib目錄 - 所有資源文件,會(huì)通過(guò)插件
maven-resources-plugin自動(dòng)復(fù)制到config目錄 - 此方式打包后,需要指定參數(shù)啟動(dòng)
-Dloader.path=lib路徑,config路徑 - 打包完后部署需要的文件清單:(在
target/目錄下都可以看到)config/**:所有resources下的資源文件lib/**:所有l(wèi)ib包,包括本地依賴(lài)xxx.jar:應(yīng)用Jar
- 運(yùn)行:
java -Dloader.path=lib,config -Dspring.profiles.active=dev -jar main.jar
配置參考
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<build>
<finalName>main</finalName>
<plugins>
<!--該插件的作用是指定編譯配置、做預(yù)處理,如Lombok、mapstruct等框架需要預(yù)處理代碼-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.4.1.Final</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<!--該插件的作用是打包spring-boot的jar包-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--入口其實(shí)會(huì)自動(dòng)配置-->
<mainClass>org.jeecg.JeecgSystemApplication</mainClass>
<!--不排除的話(huà),systemScope的依賴(lài)包會(huì)自動(dòng)被此插件打包進(jìn)xxx.jar\BOOT-INF\lib,和外部依賴(lài)產(chǎn)生沖突 -->
<includeSystemScope>false</includeSystemScope>
<skip>false</skip>
<!--分離Jar包-->
<layout>ZIP</layout>
<includes>
<include>
<groupId>nothing</groupId>
<artifactId>nothing</artifactId>
</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 該插件的作用是復(fù)制依賴(lài)的jar包到指定的文件夾里 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- 該插件的作用是復(fù)制指定的文件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<!-- 復(fù)制配置文件 -->
<execution>
<id>copy-resources</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<resources>
<!--復(fù)制資源文件到外部,注意這里先不做filtering處理,防止某些靜態(tài)文件損壞-->
<resource>
<filtering>false</filtering>
<directory>src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
</resource>
<!--僅針對(duì)配置文件filtering處理(占位符@@等)-->
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>*.xml</include>
<include>*.yml</include>
<include>*.properties</include>
</includes>
</resource>
</resources>
<outputDirectory>${project.build.directory}/config</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<!--打包java路徑下的靜態(tài)文件-->
<resource>
<directory>src/main/java</directory>
<filtering>false</filtering>
<includes>
<include>**/*.xml</include>
<include>**/*.json</include>
<include>**/*.ftl</include>
</includes>
</resource>
<!--注: 為了能在IDEA中跑起來(lái),需要將所有yml配置文件打進(jìn)jar包,filtering必須開(kāi)啟(處理占位符等操作)-->
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>*.yml</include>
<include>*.txt</include>
</includes>
</resource>
</resources>
</build>
</project>
附錄:參考鏈接
- SpringBoot項(xiàng)目分離打包
- maven-jar-plugin插件對(duì)scope="system"依賴(lài)的處理
- https://docs.spring.io/spring-boot/docs/current/maven-plugin/reference/htmlsingle/
- https://www.kancloud.cn/zhangdaiscott/jeecg-boot/3043463
- Springboot jar包外指定配置文件及原理
- Spring Boot之a(chǎn)pplication.properites的failed to convert java.lang.String to java.lang.Integer問(wèn)題解決
- Maven maven-dependency-plugin包含本地依賴(lài)包
- Spring Boot 分離資源文件打包
- https://blog.csdn.net/weixin_40461281/article/details/115905734
- https://www.jianshu.com/p/0277b6a17892
到此這篇關(guān)于SpringBoot分離打Jar包的兩種方式的文章就介紹到這了,更多相關(guān)SpringBoot打Jar包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- springboot項(xiàng)目(jar包)指定配置文件啟動(dòng)圖文教程
- 詳解如何給SpringBoot部署的jar包瘦身
- SpringBoot中讀取jar包中的resources目錄下的文件的三種方式
- SpringBoot項(xiàng)目中jar發(fā)布獲取jar包所在目錄路徑的最佳方法
- springboot通過(guò)jar包啟動(dòng)中文日志亂碼問(wèn)題及解決
- springboot項(xiàng)目打包成jar包的圖文教程
- SpringBoot項(xiàng)目引入第三方sdk?jar包的解決方案
- Spring?Boot項(xiàng)目Jar包加密實(shí)戰(zhàn)教程
相關(guān)文章
java項(xiàng)目中多線(xiàn)程使用場(chǎng)景與實(shí)現(xiàn)方式詳解
在項(xiàng)目中,多線(xiàn)程的使用非常廣泛,主要用于提高程序的并發(fā)性和響應(yīng)速度,本文為大家整理了一些常見(jiàn)的多線(xiàn)程使用場(chǎng)景以及相應(yīng)的實(shí)現(xiàn)方式,希望對(duì)大家有一定的幫助2025-04-04
Java數(shù)據(jù)結(jié)構(gòu)之ArrayList從順序表到實(shí)現(xiàn)
Java中的ArrayList是一種基于數(shù)組實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu),支持動(dòng)態(tài)擴(kuò)容和隨機(jī)訪(fǎng)問(wèn)元素,可用于實(shí)現(xiàn)順序表等數(shù)據(jù)結(jié)構(gòu)。ArrayList在內(nèi)存中連續(xù)存儲(chǔ)元素,支持快速的隨機(jī)訪(fǎng)問(wèn)和遍歷。通過(guò)學(xué)習(xí)ArrayList的實(shí)現(xiàn)原理和使用方法,可以更好地掌握J(rèn)ava中的數(shù)據(jù)結(jié)構(gòu)和算法2023-04-04
Java延時(shí)執(zhí)行的三種實(shí)現(xiàn)方式
本文主要介紹了Java延時(shí)執(zhí)行的三種實(shí)現(xiàn)方式,主要包括了Thread.sleep()方法,.sleep()使用Timer類(lèi)或使用ScheduledExecutorService接口,感興趣的可以了解一下2023-12-12
Java使用Cipher類(lèi)實(shí)現(xiàn)加密的過(guò)程詳解
這篇文章主要介紹了Java使用Cipher類(lèi)實(shí)現(xiàn)加密的過(guò)程詳解,Cipher類(lèi)提供了加密和解密的功能,創(chuàng)建密匙主要使用SecretKeySpec、KeyGenerator和KeyPairGenerator三個(gè)類(lèi)來(lái)創(chuàng)建密匙。感興趣可以了解一下2020-07-07
IntelliJ IDEA中SpringBoot項(xiàng)目通過(guò)devtools實(shí)現(xiàn)熱部署的方法
這篇文章主要介紹了IntelliJ IDEA中SpringBoot項(xiàng)目通過(guò)devtools實(shí)現(xiàn)熱部署的方法,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08

