在日常开发中,配置文件是Spring Boot应用的核心“控制台”——无论是数据库连接、第三方API密钥,还是环境切换,都离不开它。但面对 application.properties 或 application.yml,你是否曾纠结过:到底该用哪种方式读取配置最优雅?今天,我们将总结Spring Boot读取配置的常用方法,从简单到复杂,帮你彻底告别配置管理的烦恼!记得收藏哦~一、@Value注解:快速注入单个属性通过@Value注解注入单个属性是我们最熟悉的使用方式。适用场景:简单属性读取(如API版本、超时时间)。示例代码:
@Value(\"${app.name}\")private String appName;
// 支持默认值!配置缺失也不慌@Value(\"${app.timeout:30}\")private int timeout;
特点:
- 简单直接,适合“点对点”读取。
- 支持SpEL表达式,灵活获取系统变量(如 @Value("#{systemProperties$\'user.dir\'$}"))。
二、@ConfigurationProperties:结构化配置的“终极方案”适用场景:嵌套配置、列表、Map等复杂结构(如多数据源、服务集群列表)。示例代码:
# application.ymlsms: providers: aliyun: endpoint: sms.aliyun.com apikey: xxxx tencent: endpoint: sms.qq.com
@Component@ConfigurationProperties(prefix = \"sms\")public class SmsConfig { private Map providers; // 内部类 + Getter/Setter}
特点:
-
类型安全:自动转换数据类型(如List、对象嵌套)。
-
IDE友好:搭配 spring-boot-configuration-processor,代码提示超爽!
三、Environment接口:动态获取属性的“瑞士军刀”适用场景:非Spring托管的工具类,或在代码中动态判断配置值。示例代码:
@Autowiredprivate Environment env;
public void connect() { String url = env.getProperty(\"db.url\"); int retries = env.getProperty(\"db.retry\", Integer.class, 3); // 默认值3}
优势:
-
灵活性强,可结合业务逻辑动态读取。
-
支持类型转换和默认值,避免NullPointerException!
四、@PropertySource:加载自定义配置文件适用场景:将配置拆分到独立文件(如 redis.properties),实现模块化管理。示例代码:
@Configuration@PropertySource(\"classpath:redis.properties\")public class RedisConfig { @Value(\"${redis.host}\") private String host;}
注意:
- 默认只支持 .properties 格式,YAML需自定义加载器。
- 多文件可用 @PropertySource 数组加载。
五、多环境配置(Profile)适用场景:不同环境(dev/test/prod)的配置隔离。激活方式:
1、 配置文件:spring.profiles.active=dev;
2、 启动命令:java-jarapp.jar--spring.profiles.active=prod;
示例:
# application-dev.propertiesdb.url=jdbc:mysql://localhost:3306/dev
# application-prod.propertiesdb.url=jdbc:mysql://prod-db:3306/prod
技巧:
- 使用 @Profile("dev") 注解,让Bean仅在特定环境生效!
六、编程式读取:在main方法中提前获取配置适用场景:应用启动前的预检查或初始化。示例代码:
public static void main(String[] args) { ConfigurableApplicationContext context = SpringApplication.run(MyApp.class, args); String version = context.getEnvironment().getProperty(\"app.version\"); System.out.println(\"应用版本:\" + version);}
总结
配置管理是Spring Boot开发的基础功,选对方法能让代码更简洁、维护更轻松!如果你还在用 @Value 硬编码所有属性,不妨试试 @ConfigurationProperties,体验类型安全的优雅~
互动话题:你在项目中还用过哪些配置管理的高阶技巧?欢迎留言分享!