发布于2026-07-17 阅读(0)
扫一扫,手机访问
Spring Boot 最让人舒服的一点,就是它把“约定优于配置”和“配置外部化”这两个理念玩得明明白白。想想看,你不需要再纠结于繁杂的 XML 文件,也不用在代码里硬编码一堆参数——只要把配置丢进 application.yml 或 application.properties 里,Spring Boot 就会自动加载、注入到应用中。省心,也干净。

支持的格式有两种:.properties 键值对,和 .yml(YAML 格式)。后者层次清晰,读起来一目了然,所以更推荐。
那么 Spring Boot 到底从哪里找这个 application.yml?它会按下面的顺序依次扫描,后出现的文件会覆盖前面的配置:
/config 子目录/config 包src/main/resources/)日常开发中最常用的,当然是 src/main/resources/application.yml。
第一种方式:使用 @Value,适合少量配置,简单直接。
# application.yml app: name: MySpringBootApp version: 1.0.0
@Component
public class AppConfig {
@Value("${app.name}")
private String appName;
@Value("${app.version}")
private String version;
}
第二种方式:使用 @ConfigurationProperties,这是推荐的做法,尤其适合结构化配置——把整组配置映射到一个 Ja va Bean 里,清爽又好维护。
步骤 1:在 application.yml 中定义配置
# application.yml database: host: 192.168.1.100 port: 3307 username: admin password: secret123
步骤 2:创建对应的配置类
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "database") // 对应 yml 中 database 开头的配置
public class DatabaseConfig {
private String host = "localhost";
private int port = 3306;
private String username;
private String password;
// 必须有 getter/setter(或用 Lombok @Data)
public String getHost() { return host; }
public void setHost(String host) { this.host = host; }
public int getPort() { return port; }
public void setPort(int port) { this.port = port; }
// ... 其他 setter/getter
}
步骤 3:在其他 Bean 中注入使用
@Service
public class UserService {
private final DatabaseConfig dbConfig;
public UserService(DatabaseConfig dbConfig) {
this.dbConfig = dbConfig;
}
public void connect() {
System.out.println("连接数据库: " + dbConfig.getHost() + ":" + dbConfig.getPort());
}
}
真实的项目里,配置往往不止一层。嵌套对象、List、Map 都很常见。来看一个实际例子:
# application.yml
app:
security:
jwt:
secret: mySecretKey
expire-hours: 24
cors:
allowed-origins:
- http://localhost:3000
- https://myapp.com
@Component
@ConfigurationProperties(prefix = "app")
public class AppProperties {
private Security security = new Security();
public static class Security {
private Jwt jwt = new Jwt();
private Cors cors = new Cors();
public static class Jwt {
private String secret;
private int expireHours;
// getters/setters
}
public static class Cors {
private List allowedOrigins = new ArrayList<>();
// getter/setter
}
// getters/setters
}
// getter for security
}
第一种:直接在配置类上加 @Component,Spring Boot 会自动注册。简单省事。
@Component
@ConfigurationProperties(prefix = "xxx")
public class XxxProperties { ... }
第二种:在 @Configuration 类上使用 @EnableConfigurationProperties,显式指定要加载的配置类。
@Configuration
@EnableConfigurationProperties({DatabaseConfig.class, AppProperties.class})
public class AppConfig { }
需要提醒一下:两种方式不要同时用于同一个配置类,否则可能会创建多个实例,导致意料之外的行为。
从最基本的 @Value 到结构化的 @ConfigurationProperties,再到嵌套对象和启用的细节,Spring Boot 的外部化配置机制其实并不复杂。关键是把规则理清楚,然后在实际项目中多尝试几次,很快就能得心应手。
上一篇:图形化编程
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8