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
浙公网安备 33010602011771号