SpringBoot多環(huán)境配置數(shù)據(jù)讀取方式
一個(gè)SpringBoot項(xiàng)目在實(shí)際開發(fā)中通常需要在開發(fā)環(huán)境、測(cè)試環(huán)境和生產(chǎn)環(huán)境中切換運(yùn)行,而不同環(huán)境的配置(如數(shù)據(jù)庫(kù)連接、端口號(hào)、日志級(jí)別)往往不同,手動(dòng)修改配置不僅繁瑣,還容易出錯(cuò),而SpringBoot提供了靈活的多環(huán)境配置機(jī)制。
一、多環(huán)境配置的核心思路
多環(huán)境配置的核心是“環(huán)境隔離”:將不同環(huán)境的配置分離到獨(dú)立文件中,通過指定“環(huán)境標(biāo)識(shí)”自動(dòng)加載對(duì)應(yīng)配置。
核心優(yōu)勢(shì):
- 避免手動(dòng)修改配置,減少人為錯(cuò)誤;
- 配置與環(huán)境強(qiáng)關(guān)聯(lián),清晰易維護(hù);
- 支持靈活切換環(huán)境,適應(yīng)不同階段需求。
二、3種配置文件格式詳解
SpringBoot支持properties、yaml和yml三種配置文件格式,其中yaml/yml以簡(jiǎn)潔的縮進(jìn)語(yǔ)法更受歡迎。
2.1 properties格式(傳統(tǒng)格式)
properties文件采用key=value格式,多環(huán)境配置通過“文件名+環(huán)境標(biāo)識(shí)”區(qū)分。
1. 基礎(chǔ)配置文件(application.properties)
存放公共配置(所有環(huán)境共享的配置):
# 公共配置(所有環(huán)境共享) server.port=8080 # 默認(rèn)端口(可被環(huán)境配置覆蓋) spring.application.name=multi-env-demo
2. 環(huán)境專屬配置文件
開發(fā)環(huán)境:application-dev.properties
# 開發(fā)環(huán)境配置 server.port=8081 spring.datasource.url=jdbc:mysql://localhost:3306/dev_db spring.datasource.username=dev_user spring.datasource.password=dev_pwd
測(cè)試環(huán)境:application-test.properties
# 測(cè)試環(huán)境配置 server.port=8082 spring.datasource.url=jdbc:mysql://test-server:3306/test_db spring.datasource.username=test_user spring.datasource.password=test_pwd
生產(chǎn)環(huán)境:application-prod.properties
# 生產(chǎn)環(huán)境配置 server.port=80 spring.datasource.url=jdbc:mysql://prod-server:3306/prod_db spring.datasource.username=prod_user spring.datasource.password=prod_pwd
2.2 yaml/yml格式(推薦)
yaml和yml是同一種格式(后綴不同),采用縮進(jìn)+鍵值對(duì)語(yǔ)法,結(jié)構(gòu)清晰,支持列表和嵌套。
1. 單文件多環(huán)境配置(推薦)
yaml支持在一個(gè)文件中通過spring.profiles區(qū)分環(huán)境,無(wú)需創(chuàng)建多個(gè)文件:
# application.yml
# 公共配置
spring:
application:
name: multi-env-demo
profiles:
active: dev # 默認(rèn)激活開發(fā)環(huán)境
# 開發(fā)環(huán)境(通過---分隔)
---
spring:
profiles: dev
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/dev_db
username: dev_user
password: dev_pwd
# 測(cè)試環(huán)境
---
spring:
profiles: test
server:
port: 8082
spring:
datasource:
url: jdbc:mysql://test-server:3306/test_db
username: test_user
password: test_pwd
# 生產(chǎn)環(huán)境
---
spring:
profiles: prod
server:
port: 80
spring:
datasource:
url: jdbc:mysql://prod-server:3306/prod_db
username: prod_user
password: prod_pwd語(yǔ)法說明:
- 用
---分隔不同環(huán)境的配置塊; spring.profiles: dev指定環(huán)境標(biāo)識(shí)(與properties的-dev對(duì)應(yīng));spring.profiles.active: dev指定默認(rèn)激活的環(huán)境。
2. 多文件yaml配置(類似properties)
也可將不同環(huán)境配置拆分到獨(dú)立文件:
- 公共配置:
application.yml - 開發(fā)環(huán)境:
application-dev.yml - 測(cè)試環(huán)境:
application-test.yml - 生產(chǎn)環(huán)境:
application-prod.yml
2.3 三種格式的對(duì)比與選擇
| 格式 | 語(yǔ)法特點(diǎn) | 優(yōu)勢(shì) | 劣勢(shì) | 適用場(chǎng)景 |
|---|---|---|---|---|
| properties | key=value,無(wú)縮進(jìn) | 兼容性好,適合簡(jiǎn)單配置 | 冗余代碼多,不支持嵌套 | 傳統(tǒng)項(xiàng)目、簡(jiǎn)單配置 |
| yaml/yml | 縮進(jìn)語(yǔ)法,支持嵌套 | 簡(jiǎn)潔直觀,支持復(fù)雜結(jié)構(gòu) | 對(duì)縮進(jìn)敏感(空格錯(cuò)誤易出錯(cuò)) | 推薦使用,尤其是復(fù)雜配置 |
建議:優(yōu)先使用單文件yaml配置,減少文件數(shù)量,提高維護(hù)效率。
三、多環(huán)境配置的數(shù)據(jù)讀取方式
SpringBoot提供了多種方式讀取配置文件中的數(shù)據(jù),滿足不同場(chǎng)景需求。
3.1 @Value注解(簡(jiǎn)單值讀取)
@Value("${key}")用于讀取簡(jiǎn)單類型的配置(字符串、數(shù)字等),直接注入到變量中。
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class EnvController {
// 讀取端口號(hào)
@Value("${server.port}")
private int port;
// 讀取數(shù)據(jù)庫(kù)URL(支持默認(rèn)值:${key:默認(rèn)值})
@Value("${spring.datasource.url:jdbc:mysql://localhost:3306/default_db}")
private String dbUrl;
@GetMapping("/env")
public String getEnvInfo() {
return "當(dāng)前端口:" + port + ",數(shù)據(jù)庫(kù)地址:" + dbUrl;
}
}特點(diǎn):
- 適用于讀取零散的簡(jiǎn)單配置;
- 支持默認(rèn)值(
${key:默認(rèn)值}),當(dāng)配置不存在時(shí)使用默認(rèn)值; - 不適合讀取復(fù)雜對(duì)象(如嵌套結(jié)構(gòu))。
3.2 Environment對(duì)象(靈活讀?。?/h3>
Environment是Spring的核心接口,可通過getProperty("key")方法動(dòng)態(tài)讀取配置,支持默認(rèn)值和類型轉(zhuǎn)換。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class EnvController {
@Autowired
private Environment env;
@GetMapping("/env2")
public String getEnvInfo2() {
// 讀取字符串
String username = env.getProperty("spring.datasource.username");
// 讀取整數(shù)(指定類型)
Integer port = env.getProperty("server.port", Integer.class);
// 讀取并指定默認(rèn)值
String driver = env.getProperty("spring.datasource.driver-class-name",
"com.mysql.cj.jdbc.Driver");
return "用戶名:" + username + ",端口:" + port + ",驅(qū)動(dòng):" + driver;
}
}特點(diǎn):
- 適合動(dòng)態(tài)讀取配置(如根據(jù)條件讀取不同key);
- 支持類型轉(zhuǎn)換(無(wú)需手動(dòng)強(qiáng)轉(zhuǎn));
- 需注入
Environment對(duì)象,稍顯繁瑣。
3.3 @ConfigurationProperties(對(duì)象封裝,推薦)
@ConfigurationProperties用于將配置文件中的一組相關(guān)配置封裝為Java對(duì)象,適合讀取復(fù)雜配置(如數(shù)據(jù)庫(kù)連接信息、自定義配置)。
步驟1:定義配置類并綁定配置
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
// 綁定前綴為"spring.datasource"的配置
@ConfigurationProperties(prefix = "spring.datasource")
@Component // 注冊(cè)為Spring組件
public class DataSourceProperties {
private String url;
private String username;
private String password;
private String driverClassName;
// 必須提供getter和setter(Spring通過setter注入)
public String getUrl() { return url; }
public void setUrl(String url) { this.url = url; }
public String getUsername() { return username; }
public void setUsername(String username) { this.username = username; }
public String getPassword() { return password; }
public void setPassword(String password) { this.password = password; }
public String getDriverClassName() { return driverClassName; }
public void setDriverClassName(String driverClassName) { this.driverClassName = driverClassName; }
}步驟2:在配置文件中添加對(duì)應(yīng)配置
# application.yml(開發(fā)環(huán)境)
spring:
datasource:
url: jdbc:mysql://localhost:3306/dev_db
username: dev_user
password: dev_pwd
driver-class-name: com.mysql.cj.jdbc.Driver步驟3:使用配置對(duì)象
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class EnvController {
@Autowired
private DataSourceProperties dataSourceProps;
@GetMapping("/db")
public String getDbInfo() {
return "數(shù)據(jù)庫(kù)配置:" +
"URL=" + dataSourceProps.getUrl() +
",用戶名=" + dataSourceProps.getUsername();
}
}特點(diǎn):
- 適合讀取一組相關(guān)配置(如數(shù)據(jù)庫(kù)、緩存、第三方API等);
- 支持嵌套結(jié)構(gòu)(如
spring.redis.host、spring.redis.port可封裝為RedisProperties); - 配合
@Validated可實(shí)現(xiàn)配置校驗(yàn)(如非空檢查、格式校驗(yàn))。
四、自定義對(duì)象封裝(復(fù)雜配置示例)
對(duì)于自定義的復(fù)雜配置(如支付接口參數(shù)、緩存策略),@ConfigurationProperties同樣適用。
示例:封裝支付接口配置
1. 配置文件(application.yml)
# 自定義支付配置
pay:
api:
url: https://pay-dev-api.com
timeout: 3000 # 超時(shí)時(shí)間(毫秒)
merchant:
id: dev_merchant_123
key: dev_pay_key
supported-types: # 支持的支付方式(列表)
- WECHAT
- ALIPAY2. 定義配置類
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.List;
@ConfigurationProperties(prefix = "pay")
@Component
public class PayProperties {
private Api api;
private Merchant merchant;
private List<String> supportedTypes;
// 內(nèi)部類:API配置
public static class Api {
private String url;
private int timeout;
// getter和setter
}
// 內(nèi)部類:商戶配置
public static class Merchant {
private String id;
private String key;
// getter和setter
}
// 外部類的getter和setter
public Api getApi() { return api; }
public void setApi(Api api) { this.api = api; }
public Merchant getMerchant() { return merchant; }
public void setMerchant(Merchant merchant) { this.merchant = merchant; }
public List<String> getSupportedTypes() { return supportedTypes; }
public void setSupportedTypes(List<String> supportedTypes) { this.supportedTypes = supportedTypes; }
}3. 使用自定義配置
@Autowired
private PayProperties payProps;
@GetMapping("/pay")
public String getPayInfo() {
return "支付API:" + payProps.getApi().getUrl() +
",支持方式:" + payProps.getSupportedTypes();
}五、多環(huán)境啟動(dòng)方式
SpringBoot提供了多種方式指定激活的環(huán)境,靈活滿足不同場(chǎng)景(開發(fā)、測(cè)試、部署)。
5.1 配置文件中指定(默認(rèn)方式)
在application.yml或application.properties中通過spring.profiles.active指定:
# application.yml
spring:
profiles:
active: test # 默認(rèn)激活測(cè)試環(huán)境# application.properties spring.profiles.active=prod # 默認(rèn)激活生產(chǎn)環(huán)境
5.2 命令行參數(shù)指定(優(yōu)先級(jí)最高)
啟動(dòng)jar包時(shí)通過--spring.profiles.active參數(shù)指定環(huán)境,優(yōu)先級(jí)高于配置文件:
# 啟動(dòng)開發(fā)環(huán)境 java -jar multi-env-demo.jar --spring.profiles.active=dev # 啟動(dòng)生產(chǎn)環(huán)境(指定端口) java -jar multi-env-demo.jar --spring.profiles.active=prod --server.port=8080
優(yōu)勢(shì):部署時(shí)無(wú)需修改配置文件,直接通過命令切換環(huán)境。
5.3 IDE中指定(開發(fā)調(diào)試)
在IDEA/Eclipse中配置啟動(dòng)參數(shù),方便開發(fā)調(diào)試:
IDEA配置步驟:
- 打開Run/Debug Configurations;
- 在Program arguments中添加:
--spring.profiles.active=dev; - 啟動(dòng)項(xiàng)目,自動(dòng)加載開發(fā)環(huán)境配置。
5.4 環(huán)境變量指定(服務(wù)器部署)
在服務(wù)器中通過環(huán)境變量SPRING_PROFILES_ACTIVE指定,適合容器化部署(如Docker、K8s):
# Linux環(huán)境設(shè)置環(huán)境變量 export SPRING_PROFILES_ACTIVE=prod # 啟動(dòng)項(xiàng)目(自動(dòng)讀取環(huán)境變量) java -jar multi-env-demo.jar
Docker示例:
FROM openjdk:8-jdk-slim ENV SPRING_PROFILES_ACTIVE=prod # 設(shè)置環(huán)境變量 COPY target/multi-env-demo.jar app.jar ENTRYPOINT ["java", "-jar", "/app.jar"]
六、Maven多環(huán)境控制(兼容聯(lián)動(dòng))
通過Maven的profiles配置,可在打包時(shí)自動(dòng)指定SpringBoot的激活環(huán)境,實(shí)現(xiàn)“一次打包,多環(huán)境部署”。
6.1 配置pom.xml
在pom.xml中定義Maven環(huán)境,并通過resource filtering替換配置文件中的占位符:
<project>
<!-- ... 其他配置 ... -->
<profiles>
<!-- 開發(fā)環(huán)境 -->
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault> <!-- 默認(rèn)激活開發(fā)環(huán)境 -->
</activation>
<properties>
<spring.profile.active>dev</spring.profile.active> <!-- 對(duì)應(yīng)Spring環(huán)境標(biāo)識(shí) -->
</properties>
</profile>
<!-- 測(cè)試環(huán)境 -->
<profile>
<id>test</id>
<properties>
<spring.profile.active>test</spring.profile.active>
</properties>
</profile>
<!-- 生產(chǎn)環(huán)境 -->
<profile>
<id>prod</id>
<properties>
<spring.profile.active>prod</spring.profile.active>
</properties>
</profile>
</profiles>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<!-- 開啟資源過濾:替換配置文件中的${變量} -->
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>6.2 修改配置文件(使用Maven變量)
在application.yml中用@spring.profile.active@引用Maven變量:
# application.yml
spring:
profiles:
active: @spring.profile.active@ # 由Maven打包時(shí)替換6.3 打包與啟動(dòng)
通過Maven命令指定環(huán)境打包,生成的jar包會(huì)自動(dòng)激活對(duì)應(yīng)環(huán)境:
# 打包開發(fā)環(huán)境(默認(rèn)) mvn clean package # 打包測(cè)試環(huán)境 mvn clean package -P test # 打包生產(chǎn)環(huán)境 mvn clean package -P prod
啟動(dòng)jar包時(shí)無(wú)需再指定環(huán)境(已由Maven固化到配置中):
java -jar target/multi-env-demo.jar # 自動(dòng)使用打包時(shí)指定的環(huán)境
優(yōu)勢(shì):
- 打包時(shí)綁定環(huán)境,避免部署時(shí)誤操作;
- 適合CI/CD流程(如Jenkins根據(jù)分支自動(dòng)選擇環(huán)境打包)。
七、常見問題與避坑指南
7.1 配置文件優(yōu)先級(jí)問題
SpringBoot配置文件的加載順序(優(yōu)先級(jí)從高到低):
- 命令行參數(shù)(
--spring.profiles.active=dev); - 環(huán)境變量(
SPRING_PROFILES_ACTIVE=dev); - 系統(tǒng)屬性(如
-Dspring.profiles.active=dev); application-{profile}.yml(環(huán)境專屬文件);application.yml(公共配置文件);- 類路徑下的
config目錄(src/main/resources/config/)中的配置文件; - 類路徑根目錄(
src/main/resources/)中的配置文件。
避坑點(diǎn):若同一配置在多個(gè)地方定義,高優(yōu)先級(jí)配置會(huì)覆蓋低優(yōu)先級(jí)配置。例如,命令行指定的server.port=8888會(huì)覆蓋配置文件中的server.port=8080。
建議:開發(fā)環(huán)境用配置文件默認(rèn)值,測(cè)試/生產(chǎn)環(huán)境通過命令行或環(huán)境變量指定,避免配置文件沖突。
7.2 配置沖突與覆蓋規(guī)則
當(dāng)公共配置與環(huán)境專屬配置存在相同key時(shí),環(huán)境專屬配置會(huì)覆蓋公共配置。
示例:
# 公共配置(application.yml)
server:
port: 8080
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
# 開發(fā)環(huán)境配置(application-dev.yml)
server:
port: 8081 # 覆蓋公共配置的8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/dev_db # 新增配置結(jié)果:開發(fā)環(huán)境最終端口為8081,數(shù)據(jù)庫(kù)驅(qū)動(dòng)沿用公共配置的com.mysql.cj.jdbc.Driver。
注意:若同一環(huán)境配置在多個(gè)文件中定義(如application-dev.yml和application-dev.properties),properties文件優(yōu)先級(jí)高于yaml文件(因文件格式優(yōu)先級(jí))。
7.3 敏感信息泄露問題
配置文件中的數(shù)據(jù)庫(kù)密碼、API密鑰等敏感信息直接明文存儲(chǔ),存在安全風(fēng)險(xiǎn)。
解決方案:
- Spring Cloud Config/Spring Cloud Vault:集中管理配置,加密存儲(chǔ)敏感信息(適合微服務(wù)架構(gòu));
- Jasypt加密:通過jasypt對(duì)敏感信息加密,項(xiàng)目啟動(dòng)時(shí)解密。
Jasypt使用示例:
- 引入依賴:
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.4</version>
</dependency>- 配置加密密鑰(生產(chǎn)環(huán)境通過命令行傳入,避免硬編碼):
jasypt:
encryptor:
password: ${JASYPT_PASSWORD:dev_key} # 開發(fā)環(huán)境默認(rèn)密鑰,生產(chǎn)環(huán)境從環(huán)境變量獲取- 生成加密后的密碼(通過代碼或命令行):
import org.jasypt.encryption.StringEncryptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
@Component
public class EncryptRunner implements CommandLineRunner {
@Autowired
private StringEncryptor encryptor;
@Override
public void run(String... args) throws Exception {
String password = "prod_pwd";
String encrypted = encryptor.encrypt(password);
System.out.println("加密后:" + encrypted); // 輸出如:EbfYkitulv73I2p0mXI50Q==
}
}- 在配置文件中使用加密值(用
ENC()包裹):
spring:
datasource:
password: ENC(EbfYkitulv73I2p0mXI50Q==)7.4 多環(huán)境下的配置激活失敗
常見原因:
- 環(huán)境標(biāo)識(shí)拼寫錯(cuò)誤(如
spring.profiles.active: deve,正確應(yīng)為dev); - 配置文件命名錯(cuò)誤(如
application-devl.yml,正確應(yīng)為application-dev.yml); - 單文件yaml中未用
---分隔環(huán)境塊,導(dǎo)致配置不生效; - Maven過濾未開啟,
@spring.profile.active@未被正確替換。
排查步驟:
- 檢查啟動(dòng)日志,搜索
The following profiles are active,確認(rèn)激活的環(huán)境是否正確; - 檢查配置文件路徑和命名,確保與環(huán)境標(biāo)識(shí)匹配;
- 若使用Maven多環(huán)境,打包后解壓jar包,查看
BOOT-INF/classes/application.yml中spring.profiles.active是否被正確替換。
7.5 復(fù)雜配置的校驗(yàn)問題
使用@ConfigurationProperties封裝配置時(shí),若配置缺失或格式錯(cuò)誤,可能導(dǎo)致業(yè)務(wù)異常。
解決方案:通過@Validated和JSR-303注解(如@NotNull、@Min)進(jìn)行配置校驗(yàn)。
示例:
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
@ConfigurationProperties(prefix = "pay.api")
@Component
@Validated // 開啟校驗(yàn)
public class PayApiProperties {
@NotEmpty(message = "支付API地址不能為空")
private String url;
@Min(value = 1000, message = "超時(shí)時(shí)間不能小于1000毫秒")
private int timeout;
// getter和setter
}若配置缺失或不符合規(guī)則,項(xiàng)目啟動(dòng)時(shí)會(huì)直接報(bào)錯(cuò),避免運(yùn)行時(shí)異常:
Binding to target org.springframework.boot.context.properties.bind.BindException:
Failed to bind properties under 'pay.api' to com.example.config.PayApiProperties failed:
Property: pay.api.url
Value: null
Reason: 支付API地址不能為空總結(jié)
SpringBoot多環(huán)境配置的核心是“隔離與靈活切換”,結(jié)合實(shí)際開發(fā)經(jīng)驗(yàn),最佳實(shí)踐如下:
- 配置文件格式:優(yōu)先使用單文件yaml配置,通過
---分隔環(huán)境,減少文件數(shù)量; - 配置讀取:簡(jiǎn)單配置用
@Value,復(fù)雜配置用@ConfigurationProperties(配合校驗(yàn)); - 環(huán)境激活:開發(fā)環(huán)境用配置文件默認(rèn)值,測(cè)試/生產(chǎn)環(huán)境通過命令行參數(shù)或環(huán)境變量指定,避免修改配置文件;
- 敏感信息:禁止明文存儲(chǔ),使用Jasypt加密或配置中心管理;
- Maven聯(lián)動(dòng):通過Maven profiles實(shí)現(xiàn)“打包綁定環(huán)境”,適合CI/CD自動(dòng)化部署;
- 配置校驗(yàn):對(duì)核心配置添加校驗(yàn)規(guī)則,確保啟動(dòng)階段暴露問題。
到此這篇關(guān)于SpringBoot之多環(huán)境配置全解析的文章就介紹到這了,更多相關(guān)SpringBoot多環(huán)境配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot配置文件、多環(huán)境配置、讀取配置的4種實(shí)現(xiàn)方式
- SpringBoot使用YML文件進(jìn)行多環(huán)境配置的三種方法
- 一文掌握SpringBoot多環(huán)境配置
- SpringBoot中yml多環(huán)境配置的3種方法
- springboot使用yml文件配置多環(huán)境方式(dev、test、prod)
- SpringBoot加載多個(gè)配置文件實(shí)現(xiàn)dev、product多環(huán)境切換的方法
- SpringBoot實(shí)現(xiàn)多環(huán)境配置文件切換教程詳解
- springboot多模塊多環(huán)境配置文件問題(動(dòng)態(tài)配置生產(chǎn)和開發(fā)環(huán)境)
- springboot多環(huán)境配置方案(不用5分鐘)
- 走進(jìn)SpringBoot之配置文件與多環(huán)境詳解
- springboot多環(huán)境(dev、test、prod)配置詳解
相關(guān)文章
Java壓縮解壓zip技術(shù)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
Java解壓縮zip - 多個(gè)文件(包括文件夾),對(duì)多個(gè)文件和文件夾進(jìn)行壓縮,對(duì)復(fù)雜的文件目錄進(jìn)行解壓。壓縮方法使用的是可變參數(shù),可以壓縮1到多個(gè)文件2017-05-05
java通過AOP實(shí)現(xiàn)全局日志打印詳解
最近自己一直再看現(xiàn)有微服務(wù)的日志模塊,發(fā)現(xiàn)就是使用AOP來做controller層的日志處理,加上項(xiàng)目在進(jìn)行架構(gòu)優(yōu)化,這篇文章主要給大家介紹了關(guān)于java通過AOP實(shí)現(xiàn)全局日志打印的相關(guān)資料,需要的朋友可以參考下2022-01-01
淺談MyBatis Example模式SQL注入風(fēng)險(xiǎn)
在使用MyBatis逆向工程生成的Example查詢模式時(shí),很多開發(fā)者看到XML中存在${}占位符就會(huì)擔(dān)心SQL注入問題,本文就來介紹一下MyBatis Example模式SQL注入風(fēng)險(xiǎn),感興趣的可以了解一下2025-10-10
Gradle中Maven倉(cāng)庫(kù)配置的實(shí)現(xiàn)步驟
在Java/Kotlin 項(xiàng)目的構(gòu)建過程中,依賴管理是核心環(huán)節(jié)之一,而Maven 倉(cāng)庫(kù)是最常見的依賴來源,本文就來詳細(xì)的介紹一下Gradle中Maven倉(cāng)庫(kù)配置,感興趣的可以了解一下2025-09-09
mybatis?mapper.xml中如何根據(jù)數(shù)據(jù)庫(kù)類型選擇對(duì)應(yīng)SQL語(yǔ)句
這篇文章主要介紹了mybatis?mapper.xml中如何根據(jù)數(shù)據(jù)庫(kù)類型選擇對(duì)應(yīng)SQL語(yǔ)句,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
Eclipse+Java+Swing實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)的實(shí)例代碼
這篇文章主要介紹了Eclipse+Java+Swing實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01

