0Pricing
Java Academy · 课时

应用属性与配置文件

使用 application.properties/yml 外置配置、定义配置文件,并通过 @Value 和 @ConfigurationProperties 注入值

应用属性与配置文件 是 CoddyKit 上的免费 Java Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Java Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Java Academy 课程共包含 4 节课。

application.properties 与 application.yml

Spring Boot 会从 src/main/resources/application.properties 或 application.yml 读取配置。YAML 支持层次化配置,无需重复键名;两者在功能上是等价的。

# application.properties:
server.port=8080
spring.datasource.url=jdbc:postgresql://localhost/mydb
spring.jpa.hibernate.ddl-auto=validate

# Equivalent application.yml:
server:
  port: 8080
spring:
  datasource:
    url: jdbc:postgresql://localhost/mydb
  jpa:
    hibernate:
      ddl-auto: validate

使用 @Value 注入值

使用 @Value("${property.key}") 注入单个属性。使用 ${key:default} 添加默认值。系统也支持 SpEL 表达式。

@Service
public class PricingService {
    @Value("${pricing.vat-rate:0.20}")
    private double vatRate;
    @Value("${app.name}")
    private String appName;
}

使用 @ConfigurationProperties 进行类型安全的绑定

将一组相关属性绑定到使用 @ConfigurationProperties 注解的 Java 记录或类上。系统支持验证注解。

@ConfigurationProperties(prefix = "app.mail")
public record MailProperties(
    @NotBlank String host,
    @Min(1) @Max(65535) int port,
    boolean ssl
) {}
// Bind in Spring Boot 3: @EnableConfigurationProperties(MailProperties.class)

配置文件:定义环境

配置文件可以让您拥有特定于环境的配置。您可以定义仅在某个配置文件处于激活状态时才生效的 Bean 或属性。

# application-dev.properties (active when profile=dev):
spring.datasource.url=jdbc:h2:mem:testdb
logging.level.com.example=DEBUG

# application-prod.properties (active when profile=prod):
spring.datasource.url=jdbc:postgresql://prod-db/app
logging.level.com.example=WARN

激活配置文件

您可以通过 application.properties、环境变量、系统属性或 Spring Boot 的 SPRING_PROFILES_ACTIVE 激活配置文件。

# application.properties:
spring.profiles.active=dev
# Or environment variable:
export SPRING_PROFILES_ACTIVE=prod
# Or JVM argument:
java -Dspring.profiles.active=prod -jar app.jar

在 Bean 上使用 @Profile

为 @Bean 或 @Component 添加 @Profile("prod") 注解,即可仅在匹配的配置文件处于激活状态时注册它。

@Configuration
public class DataSourceConfig {
    @Bean @Profile("dev")
    public DataSource h2DataSource() { return new EmbeddedDatabaseBuilder().build(); }
    @Bean @Profile("prod")
    public DataSource postgresDataSource() { return DataSourceBuilder.create().url(prodUrl).build(); }
}

配置文件组(Spring Boot 2.4+)

您可以将多个配置文件归入一个名称下。激活该组后,其中列出的所有配置文件都会同时激活。

# application.properties:
spring.profiles.group.production=prod,metrics,cloud

使用环境变量进行外部化配置

Spring Boot 会自动将环境变量映射为属性。DB_HOST 会映射到 db.host(宽松绑定)。这非常适合 Docker 和 Kubernetes 部署。

# application.properties:
spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USER}
spring.datasource.password=${DB_PASS}

属性覆盖优先级

属性按优先级顺序应用:命令行参数 > 环境变量 > 特定配置文件 > application.properties > 默认值。高优先级来源会覆盖低优先级来源。

使用 Jasypt 加密敏感属性

密码等敏感值可以使用 Jasypt Spring Boot 加密。请将加密后的值存储在属性中;Jasypt 会在启动时使用作为 JVM 参数传入的主密钥进行解密。

# application.properties:
spring.datasource.password=ENC(k9r/2dfhXPQz+2jR8yzUYw==)
# JVM arg:
java -Djasypt.encryptor.password=masterSecret -jar app.jar

多文档 YAML 文件

YAML 文件支持多个文档,文档之间用 --- 分隔。请在每个文档中使用 spring.config.activate.on-profile,以便在文件内配置特定配置文件。

server:
  port: 8080
---
spring:
  config:
    activate:
      on-profile: prod
server:
  port: 443

快速检查

哪个注解可以将一组相关属性以类型安全的方式绑定到一个 Java 类?

回顾

请使用 application.properties / application.yml 配置应用。单个值使用 @Value;属性组使用 @ConfigurationProperties。使用配置文件区分不同环境。环境变量会覆盖属性——这对容器至关重要。

常见问题解答

「应用属性与配置文件」课时是免费的吗?

是的 — 「应用属性与配置文件」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Java Academy 课程的其余内容,请升级到 CoddyKit PRO。 Java Academy 课程共包含 4 节课。

「应用属性与配置文件」这节课中我会学到什么?

使用 application.properties/yml 外置配置、定义配置文件,并通过 @Value 和 @ConfigurationProperties 注入值 你通过在浏览器中直接运行的动手代码来练习 Java Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Java Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Java Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「应用属性与配置文件」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Java Academy 课中编写并运行代码吗?

能。每节 Java Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 自动配置与 Spring Boot 启动器
  2. 应用属性与配置文件
  3. Bean 装配:@Component、@Service、@Repository
  4. 构造器注入与循环依赖
← 返回 Java Academy