SpringBoot读取配置数据 SpringBoot读取properties或者application.yml配置文件中的数据

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

SpringBoot读取配置数据 SpringBoot读取properties或者application.yml配置文件中的数据

CurtainMy   2021-04-22 我要评论

读取application文件

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

user.address=china
user.company=demo
user.name=让我康康

1、使用@Value注解读取

直接 代码如下:

package im.homeapi.controller;
 
import org.springframework.beans.factory.annotation.Value;
import org.omg.CORBA.PUBLIC_MEMBER;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@RestController
@RequestMapping(value="/api")
public class HomeController {
 
  @Value("${user.address}")
  private String address;
 
  @Value("${user.company}")
  private String company;
 
  @Value("${user.name}")
  private String name;
 
  //value 指定访问地址,method 指定请求类型
  @RequestMapping(value = "/home",method = RequestMethod.GET)
  public String Home()
  {
    return "Hello Word";
  }
  @RequestMapping(value = "/getConfig")
  public String getConfig() {
    return "获取的配置信息 :" +
        " name=" + name +
        " address=" + address +
        " , company=" + company;
  } 
}

放到单独的配置类中读取:

package im.homeapi.entity; 
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class UserConfig {
 
  @Value("${user.address}")
  private String address;
 
  @Value("${user.company}")
  private String company;
 
  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 getName() {
    return name;
  }
 
  public void setName(String name) {
    this.name = name;
  }
 
  @Value("${user.name}")
  private String name;
}

调用如下:

 @Autowired
  private UserConfig userConfig;
  //读取配置类
  @RequestMapping(value = "/getConfigEntity")
  public String getConfigEntity() {
    return "获取的配置信息 :" +
        " name=" + userConfig.getName() +
        " address=" + userConfig.getAddress() +
        " , company=" + userConfig.getCompany();
 
  }

运行结果如下:

2、使用@ConfigurationProperties注解读取方式

代码如下:

package im.homeapi.entity;
 
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
 
@Component
@ConfigurationProperties(prefix = "user")
public class UserConfig1 {
  private String address;
  private String company;
  private String name;
 
  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 getName() {
    return name;
  }
 
  public void setName(String name) {
    this.name = name;
  }
}

调用:

package im.homeapi.controller;
 
import im.homeapi.entity.UserConfig;
import im.homeapi.entity.UserConfig1;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.omg.CORBA.PUBLIC_MEMBER;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@RestController
@RequestMapping(value="/api")
public class ConfigController {
  @Autowired
  private UserConfig1 userConfig;
  //读取配置类 ConfigurationProperties注解读取方式
  @RequestMapping(value = "/getConfigEntity1")
  public String getConfigEntity() {
    return "获取的配置信息 :" +
        " name=" + userConfig.getName() +
        " address=" + userConfig.getAddress() +
        " , company=" + userConfig.getCompany();
 
  }
}

运行结果:

3、读取指定文件

3.1、@PropertySource+@Value注解读取方式

在resources下新建配置config/db-config.properties 

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

db.username=root
db.password=123456

如图:

代码:

package im.homeapi.entity;
 
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
 
@Component
@PropertySource(value = { "config/db-config.properties" })
public class DBConfig {
 
  @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;
  }
}

调用代码:

package im.homeapi.controller;
import im.homeapi.entity.DBConfig;
import im.homeapi.entity.UserConfig;
import im.homeapi.entity.UserConfig1;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.omg.CORBA.PUBLIC_MEMBER;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@RestController
@RequestMapping(value="/api")
public class DbController {
  @Autowired
  private DBConfig dbConfig;
  //读取配置类 PropertySource+@Value注解读取方式
  @RequestMapping(value = "/getConfigdb")
  public String getConfigdb() {
    return "获取的配置信息 :" +
        " name=" + dbConfig.getUsername() +
        " , password=" + dbConfig.getPassword();
  }
}

运行结果:

3.2、@PropertySource+@ConfigurationProperties注解读取方式

代码:

package im.homeapi.entity;
 
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
 
@Component
@ConfigurationProperties(prefix = "db")
@PropertySource(value = { "config/db-config.properties" })
public class DBconfig1 {
  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;
  }
}

调用代码:

 @Autowired
  private DBconfig1 dbConfig1;
  //读取配置类 @PropertySource+@ConfigurationProperties注解读取方式
  @RequestMapping(value = "/getConfigdb1")
  public String getConfigdb1() {
    return "获取的配置信息 :" +
        " name=" + dbConfig1.getUsername() +
        " , password=" + dbConfig1.getPassword();
  }

运行结果:

@Component 表示将该类标识为Bean

@ConfigurationProperties(prefix = "db")用于绑定属性,其中prefix表示所绑定的属性的前缀。

@PropertySource(value = "config/db-config.properties")表示配置文件路径。

4、使用Environment读取

代码:

 @Autowired
  private Environment environment;
  //读取配置类 CEnvironment读取方式
  @RequestMapping(value = "/getConfigenv")
  public String getConfigenv() {
    return "获取的配置信息 :" +
        " name=" + environment.getProperty("user.name") +
        " address=" + environment.getProperty("user.address") +
        " , company=" + environment.getProperty("user.company");
   }

运行结果:

总结

从以上示例来看,Spring Boot可以通过@PropertySource,@Value,@Environment,@ConfigurationProperties来绑定变量。

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们