SpringBoot中读取变量

一、读取默认配置文件中变量

  即读取application.properties或者application.yaml中的变量

  配置文件如下:

local.ip=192.168.23.111
local.port=8125

local.address=${local.ip}:${local.port} #可以使用变量,获取变量值方法一样

ds.hosts[0]=192.168.1.100
ds.hosts[1]=192.168.1.101
ds.hosts[2]=192.168.1.102

ds.sports[0]=8080
ds.sports[1]=8081
ds.sports[2]=8082
ds.sports[3]=8083

  方式一使用Environment;

  方式二使用@Value,示例如下:

@Autowired
private Environment environment;

@Value("${local.ip}")
private String valueip;

@Value("${local.port}")
private Integer valueport;

//设置默认值
@Value("${local.url:192.168.43.122}")
private String valueurl;

public void user(){
    String env_ip = environment.getProperty("local.ip");
    int env_port = environment.getProperty("local.port",Integer.class);
    //设置默认值
    String env_url = environment.getProperty("local.url","192.168.43.122");

    System.out.println("env_ip= "+env_ip);
    System.out.println("valueip= "+env_ip);
    System.out.println("env_port= "+env_port);
    System.out.println("valueport= "+valueport);
    System.out.println("env_url= "+env_url);
    System.out.println("valueurl= "+valueurl);
}

  方式三使用ConfigurationProperties注解配合prefix和get、set,示例如下

@Component
@ConfigurationProperties(prefix = "local")
public class LocationProperties {

    private String ip;
    private int port;
    ... ... //get set 方法
}

@Component
@ConfigurationProperties("ds")
public class DsProperties {

    private List<String> hosts=new ArrayList<String>();
    private String[] sports;
    ... ... //get set 方法
}
@Autowired
private LocationProperties locationProperties;

@Autowired
private DsProperties dsProperties;

public void user(){

  String ip
= locationProperties.getIp(); int port = locationProperties.getPort(); System.out.println("ip:"+ip); System.out.println("port:"+port); List<String> hostList = dsProperties.getHosts(); String[] sportsArr = dsProperties.getSports(); for(String host : hostList){   System.out.println(host); } for(String sport : sportsArr){   System.out.println(sport); } }

  默认配置文件可以放在classpath、classpath:/config、file、file:/config下面(file可以是任意名字),如下图所示:

  

二、读取指定配置文件中变量

  使用PropertySource、PropertySources注解,配置文件如下:

  

  加载方式1

@Configuration
@PropertySource("classpath:jdbc.properties")
@PropertySource("classpath:jdbc2/jdbc2.properties")
@PropertySource("file:/d:/1_1test/jdbc3.properties")
public class FileConfig {}

  加载方式2

@Configuration
@PropertySources({@PropertySource("classpath:jdbc.properties"),@PropertySource("classpath:jdbc2/jdbc2.properties"),
                  @PropertySource("file:/d:/1_1test/jdbc3.properties")})
public class FileConfig {}

  获取变量的方式同样使用Environment或@Value或者ConfigurationProperties

 

 

  

 

posted @ 2019-11-10 17:51  雷雨客  阅读(1303)  评论(0)    收藏  举报