使用 Spring Boot 的yml配置文件读取方式

在 Java 项目中读取 YML(YAML)配置文件有多种方式,尤其在使用 Spring Framework(包括 Spring Boot)时,更是提供了丰富的支持。以下是几种常见的方式来读取 YML 配置文件:

1. 使用 Spring Boot 的自动配置

Spring Boot 提供了对 YML 文件的自动化支持,这也是最常用的方式。

1.1 使用 @Value 注解读取配置

你可以使用 @Value 注解读取 YML 文件中的单个配置属性。

application.yml

app:
  name: MyApplication
  description: This is a sample application.

Java类

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class AppConfig {

    @Value("${app.name}")
    private String appName;

    @Value("${app.description}")
    private String appDescription;

    // Getters
    public String getAppName() {
        return appName;
    }

    public String getAppDescription() {
        return appDescription;
    }
}

1.2 使用 @ConfigurationProperties 注解读取配置

对于复杂或结构化的配置,推荐使用 @ConfigurationProperties 注解。

application.yml

app:
  name: MyApplication
  description: This is a sample application.
  server:
    port: 8080
    host: localhost

Java类
java复制代码import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "app")
public class AppConfig {
private String name;
private String description;
private Server server;

public static class Server {
    private int port;
    private String host;

    // Getters and Setters
    public int getPort() {
        return port;
    }

    public void setPort(int port) {
        this.port = port;
    }

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }
}

// Getters and Setters
public String getName() {
    return name;
}

public void setName(String name) {
        this.name = name;
    }

public String getDescription() {
    return description;
}

public void setDescription(String description) {
    this.description = description;
}

public Server getServer() {
    return server;
}

public void setServer(Server server) {
    this.server = server;
}

}

posted @ 2024-09-17 14:41  his365  阅读(1317)  评论(0编辑  收藏  举报