通过spring容器获取配置文件中的参数
package com.boot.config.bootconfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
@SpringBootApplication
public class BootConfigApplication {
public static void main(String[] args) {
//通过spring容器获取环境对象
ConfigurableApplicationContext context = SpringApplication.run(BootConfigApplication.class, args);
ConfigurableEnvironment environment = context.getEnvironment();
String property = environment.getProperty("local.ip.addr");
System.out.println(environment.getProperty("user.dir"));
System.out.println(environment.getProperty("local.ip.root"));
System.out.println(property);
}
}
通过@Value方法读取配置文件中的参数
springBoot默认是读取resources下文件名为application.properties或者application.yml的文件,那如何读取文件名不是application的配置文件呢?方法如下:
在运行的时候指定参数的方式
在jvm里配置需要使用-D
通过@ConfigurationProperties注解读取配置文件中的值,一般都是使用这种方式
application.properties 文件内容:
local.ip.addr = 192.168.2.110
local.ip.root= root
greey.datasource.driverClassName=com.mysql.jdbc.Driver
greey.datasource.url=jdbc:mysql://123
greey.datasource.username=root
greey.datasource.password=torey123
装载的实体类:DataSourceProperties.java
package com.boot.config.bootconfig;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* @ClassName:DataSourceProperties
* @Description:
* @author: Torey
*/
@Component
@ConfigurationProperties(prefix = "greey.datasource")
public class DataSourceProperties {
//一般情况下都是用这种方法读取的
private String driverClassName;
private String url;
private String username;
private String password;
@Override
public String toString() {
return "DataSourceProperties{" +
"driverClassName='" + driverClassName + '\'' +
", url='" + url + '\'' +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
public String getDriverClassName() {
return driverClassName;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
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 com.boot.config.bootconfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
@SpringBootApplication
public class BootConfigApplication {
public static void main(String[] args) {
//通过spring容器获取环境对象
ConfigurableApplicationContext context = SpringApplication.run(BootConfigApplication.class, args);
ConfigurableEnvironment environment = context.getEnvironment();
//通过ConfigurationProperties方式读取
System.out.println("===通过ConfigurationProperties方式读取===");
System.out.println(context.getBean(DataSourceProperties.class));
context.close();
}
}
在运行时,读取多个文件
–spring.config.location=classpath:conf/app.yml,classpath:conf/app1.properties 或者用
-Dspring.config.location=classpath:conf/app.yml,classpath:conf/app1.properties