您的位置:首页 > 编程语言 > Java开发

springboot读取配置文件的三种方式

2017-10-21 10:48 691 查看
方式一:
@Configuration
//@PropertySource("classpath:jdbc.properties")
//@PropertySource("classpath:config/jdbc222222.properties")
@PropertySources({@PropertySource("classpath:jdbc.properties"),@PropertySource("classpath:config/jdbc222222.properties")})
public class FileConfig {

}

@Component
public class Dbconfig {

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

@Value("${db.port}")
private Integer dbPort;

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

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

public void show(){
System.out.println(">>>>>>>>>>>Dbconfigz中获取到的参数");
System.out.println("dbUrl========="+dbUrl);
System.out.println("dbPort"+ "========="+dbPort);
System.out.println("dbPassword"+ "========="+dbPassword);
System.out.println("dbUserName"+ "========="+dbUserName);

}
}

配置文件的信息,配置文件的名称是jdbc.properties。路径是在resources下
db.password=root
db.username=root

data.url=127.0.0.12
data.port=12343
data.name=1233
data.password=root3

测试的主方式是:

public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(App.class, args);
context.getBean(Runnable.class).run();

//String property = context.getEnvironment().getProperty("local.ip");
//System.out.println("获取到的参数是:"+property);
//context.getBean(UserConfig.class).show();
context.getBean(Dbconfig.class).show();
context.getBean(DataSourceProperties.class).show();
context.close();
}

方式二:通过environment获取外部的配置信息
@Component
public class UserConfig {

@Autowired
Environment environment;

@Value("${local.port}")
private String localPort;

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

@Value("${tomcat.port:9090}")
private String tomcatPort;

public void show(){
System.out.println("application.properties中的local.ip的值:"+environment.getProperty("local.ip"));
System.out.println("application.properties中的local.port的值:"+environment.getProperty("local.port"));
System.out.println("application.properties中的local.port的值:"+environment.getProperty("local.port", Integer.class));
System.out.println("application.properties中的name的值:"+environment.getProperty("name"));
System.out.println("application.properties中的app.name的值:"+environment.getProperty("app.name"));
System.out.println("application.properties中的tomcat.port的值:"+environment.getProperty("tomcat.port"));
System.out.println("application.properties中的tomcat.port的值:"+tomcatPort);

}
}

方式三:
@Component
@ConfigurationProperties(prefix="data")
public class DataSourceProperties {

private String url;
private String port;
private String name;
private String password;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getPort() {
return port;
}
public void setPort(String port) {
this.port = port;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

public void show(){
System.out.println(">>>>>>>>>>>>url"+url);
System.out.println(">>>>>>>>>>>>port"+port);
System.out.println(">>>>>>>>>>>>name"+name);
System.out.println(">>>>>>>>>>>>password"+password);
}

}

总的说明:
* 两种方法获取配置信息中的信息
* 配置文件的文件名字为application.properties
* 默认的位置在classpath根目录,或者classpath:/config file:/ file:config/
*
* 默认的配置文件名字可以使用 --spring.config.name来指定,只需要指定文件的名字,文件扩展名可以省略。
* 默认的配置文件路径可以使用--spring.config.location来指定,
* 配置文件需要指定全路径,包括目录和文件名字,还可以指定多个,多个用逗号隔开
* --spring.config.location=classpath:config/app.properties(如果是文件则file:文件的路径)
*

spring boot 支持获取数组,集合的配置
package com.zcp.springstart;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
* 支持获取数组,集合
* 配置方式为:name[index]=value
* 在application.properties文件中的写法:
* data.url=127.0.0.1
data.port=1234
data.name=123
data.password=root.post
ds.hosts[0]=128.128.128.0
ds.hosts[1]=128.128.128.1
ds.hosts[2]=128.128.128.2
ds.hosts[3]=128.128.128.3
ds.ports[0]=8888
ds.ports[1]=8889
ds.ports[2]=8890
ds.ports[3]=8891
ds.ports[4]=8892
* <p>Title: TomcatProperties</p>
* <p>Description: </p>
* <p>Company: www.itcast.cn</p>
* @version 1.0
*/
@Component
@ConfigurationProperties("ds")
public class TomcatProperties {
private List<String> hosts = new ArrayList<>();

private String[] ports;

public String[] getPorts() {
return ports;
}

public void setPorts(String[] ports) {
this.ports = ports;
}

public List<String> getHosts() {
return hosts;
}

public void setHosts(List<String> hosts) {
this.hosts = hosts;
}

@Override
public String toString() {
return "TomcatProperties [hosts=" + hosts + ", ports=" + Arrays.toString(ports) + "]";
}

}

在application.properties文件中的配置信息入下:

data.url=127.0.0.1
data.port=1234
data.name=123
data.password=root.post
ds.hosts[0]=128.128.128.0
ds.hosts[1]=128.128.128.1
ds.hosts[2]=128.128.128.2
ds.hosts[3]=128.128.128.3
ds.ports[0]=8888
ds.ports[1]=8889
ds.ports[2]=8890
ds.ports[3]=8891
ds.ports[4]=8892

测试的主方式是:
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(App.class, args);
context.getBean(Runnable.class).run();

//String property = context.getEnvironment().getProperty("local.ip");
//System.out.println("获取到的参数是:"+property);
//context.getBean(UserConfig.class).show();
//context.getBean(Dbconfig.class).show();
//context.getBean(DataSourceProperties.class).show();
System.out.println(context.getBean(TomcatProperties.class));
context.close();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息