SpringBoot读取配置的5种方式

本文详细介绍SpringBoot中如何使用@Value, @ConfigurationProperties, Environment和@PropertySource注解读取application.yml或properties文件及自定义配置文件。通过示例展示不同注解的使用场景和方法。

读取application文件

在application.yml或者properties文件中添加:

info.address=USA
info.company=Spring
info.degree=high

@Value注解读取方式

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

@Component
public class InfoConfig1 {

    @Value("${info.address}")
    private String address;

    @Value("${info.company}")
    private String company;

    @Value("${info.degree}")
    private String degree;

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getCompany() {
        return company;
    }

    public void setCompany(String company) {
        this.company = company;
    }

    public String getDegree() {
        return degree;
    }

    public void setDegree(String degree) {
        this.degree = degree;
    }

}

@ConfigurationProperties注解读取方式

@Component
@ConfigurationProperties(prefix = "info")
public class InfoConfig2 {

    private String address;
    private String company;
    private String degree;

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getCompany() {
        return company;
    }

    public void setCompany(String company) {
        this.company = company;
    }

    public String getDegree() {
        return degree;
    }

    public void setDegree(String degree) {
        this.degree = degree;
    }

}

读取指定文件

资源目录下建立config/db-config.properties:

db.username=root
db.password=123456

@PropertySource+@Value注解读取方式

@Component
@PropertySource(value = { "config/db-config.properties" })
public class DBConfig1 {

    @Value("${db.username}")
    private String username;

    @Value("${db.password}")
    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}

注意:@PropertySource不支持yml文件读取。

@PropertySource+@ConfigurationProperties注解读取方式

@Component
@ConfigurationProperties(prefix = "db")
@PropertySource(value = { "config/db-config.properties" })
public class DBConfig2 {

    private String username;
    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}

Environment读取方式

以上所有加载出来的配置都可以通过Environment注入获取到。

@Autowired
private Environment env;

// 获取参数
String getProperty(String key);

总结

从以上示例来看,Spring Boot可以通过@PropertySource,@Value,@Environment,@ConfigurationProperties来绑定变量。
原文链接:https://www.jianshu.com/p/982e36f42c67

### 回答1: Spring Boot 支持多种方式读取配置文件,常见的有以下几种: 1. application.properties / application.yml : 默认位于项目的 classpath 下,可以通过 @Value 注解获取配置的值。 2. 命令行参数: 通过 java -jar xxx.jar --key=value 的方式传入。 3. 外部配置文件: 通过 spring.config.name 和 spring.config.location 配置,指定配置文件的名称和路径。 4. 环境变量: 通过系统环境变量配置配置项为 SPRING_APPLICATION_JSON。 以上四种方式的优先级依次降低,后面的会覆盖前面的配置。 ### 回答2: Spring Boot对于配置文件的读取非常灵活,支持多种格式的配置文件,例如:Properties文件、YAML文件等。在Spring Boot中,可以通过以下几种方式读取配置文件: 1. 使用@SpringBootApplication注解,在主类上加入该注解后,Spring Boot会自动扫描主类所在包及子包中的application.properties或application.yml文件,并将其中的配置项加载到Spring容器中。 2. 通过@ConfigurationProperties注解,将配置文件的属性注入到Bean中,在类上使用@ConfigurationProperties注解,并指定prefix,然后在Bean中通过属性进行获取。 3. 通过@Value注解,直接将配置文件中的值注入到Bean的属性中,在类中使用@Value注解,并指定${key}的方式获取配置文件中的值。 4. 使用Spring Environment API,通过Environment接口获取配置文件中的值,例如使用environment.getProperty(“key”)方法获取配置文件中的值。 5. 使用Spring Boot的外部化配置特性,可以通过命令行参数、操作系统环境变量、JNDI等方式设置配置文件中的属性的值。 以上就是Spring Boot读取配置文件的几种方式,具体使用方式需要根据项目的实际需求进行选择和配置。在实际项目中,一般会结合多种方式配合使用,以达到灵活和高效的配置效果。 ### 回答3: Spring Boot是一种基于Spring Framework的轻量级应用程序开发框架,它采用了约定大于配置方式,可以快速地开发和构建出高效、可扩展、可靠的Java应用程序。在Spring Boot开发中,读取配置文件是非常重要的一个环节,Spring Boot提供了多种方式读取配置文件,这里介绍其中的三种常见方式。 1. application.properties/application.yml 这是Spring Boot最常用的一种读取配置文件的方式。在Spring Boot的默认配置中,可以同时使用两种文件格式来定义配置信息,分别是application.properties和application.yml。这两种文件格式可以包含相同的设置信息,并且可以混合使用。 application.properties是一种基于键值对的配置文件格式,通过在文件中指定“键=值”的方式来定义配置信息。例如: server.port=8080 spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=123456 application.yml是一种基于缩进的配置文件格式,通过缩进和冒号的方式来定义配置信息。例如: server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/test username: root password: 123456 2. @ConfigurationProperties注解 @ConfigurationProperties注解是一种基于JavaBean的配置方式,可以将配置信息自动绑定到JavaBean的属性中,从而轻松地管理和配置整个应用程序的配置信息。例如: @Configuration @ConfigurationProperties(prefix = "spring.datasource") public class DataSourceProperties { private String url; private String username; private String password; // 省略getter和setter方法 } 通过将@ConfigurationProperties注解和prefix属性与JavaBean关联起来,可以自动将application.properties或application.yml文件中以spring.datasource作为前缀的所有配置信息绑定到DataSourceProperties类的对应属性中。 3. @Value注解 @Value注解是一种直接将配置信息注入到Java类中的方式。例如: @Service public class UserServiceImpl implements UserService { @Value("${server.port}") private int serverPort; // 省略其他内容 } 通过@Value注解,可以直接将application.properties或application.yml文件中的server.port配置信息注入到serverPort变量中。 总之,Spring Boot提供了多种灵活且方便的方式读取配置文件,我们可以根据实际应用场景和需求选择相应的方式来管理和配置应用程序的配置信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值