
在Spring Boot项目中添加和使用自定义配置文件非常灵活,以下是几种常用方式:
Spring Boot默认读取src/main/resources下的:
application.propertiesapplication.yml(或application.yaml)示例:application.properties
# 服务器端口
server.port=8081
# 自定义配置
app.name=MySpringApp
app.version=1.0.0
app.enabled=true示例:application.yml(更简洁的格式)
server:
port: 8081
app:
name: MySpringApp
version: 1.0.0
enabled: true如果需要分离配置(如数据库配置、第三方服务配置),可以创建自定义配置文件。
创建自定义配置文件src/main/resources/config/app-config.properties:
创建配置类绑定这些属性:
在主配置文件application.properties中指定要加载的配置文件:
# 加载多个自定义配置文件
spring.config.import=classpath:config/db-config.properties,classpath:config/mq-config.propertiesSpring Boot支持按环境加载不同配置文件,命名规则:application-{profile}.properties
application-dev.properties(开发环境)application-test.properties(测试环境)application-prod.properties(生产环境)application.properties中添加:spring.profiles.active=devjava -jar app.jar --spring.profiles.active=prodimport org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ConfigController {
// 从默认配置文件获取
@Value("${app.name}")
private String appName;
// 从自定义配置文件获取
@Value("${app.max-connections}")
private int maxConnections;
@GetMapping("/config")
public String getConfig() {
return "App Name: " + appName + ", Max Connections: " + maxConnections;
}
}如前面创建的AppConfig类,在需要使用的地方直接注入:
@RestController
public class AppController {
private final AppConfig appConfig;
// 构造函数注入
public AppController(AppConfig appConfig) {
this.appConfig = appConfig;
}
@GetMapping("/app-info")
public String getAppInfo() {
return "Timeout: " + appConfig.getTimeout() +
", Tracking: " + appConfig.getFeature().isTrackingEnabled();
}
}@ConfigurationProperties需要添加依赖(Spring Boot 2.2+已默认包含):<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>max-connections),绑定到Java类时会自动转换为驼峰命名(maxConnections)通过以上方法,你可以灵活地管理Spring Boot项目中的各种配置。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。