从配置文件中读取属性或对象这是一个非常普遍也非常基础的一个操作,今天就和大家分享一下如何读取配置文件里的信息。
1、yml配置文件
r:
config:
datasource:
driver: "r-driver"
url: "r-url"
username: "r-username"
password: "r-password"
remark: "this is remark"
2、需要映射的对象
package priv.cwr.configuration;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* @Author: R
* @Date: 18-12-11 18:17
* @Description:
*/
@Data
@Component
@ConfigurationProperties(prefix = "r.config.datasource") //这是yml中对应的位置
public class DataSourceConfig {
private String driver;
private String url;
private String username;
private String password;
}
3、测试
package priv.cwr;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import priv.cwr.configuration.DataSourceConfig;
@RunWith(SpringRunner.class)
@SpringBootTest
public class CwrJpaApplicationTests {
private static final ObjectMapper OBJECTMAPPER = new ObjectMapper();
@Autowired
private DataSourceConfig dataSourceConfig;
@Value("${r.config.remark}")
private String remark;
@Test
public void contextLoads() throws JsonProcessingException {
System.out.println("DataSourceConfig -> " + OBJECTMAPPER.writeValueAsString(this.dataSourceConfig));
System.out.println("remark -> " + this.remark);
}
}
结果如下
总结
1、获取单个属性主要使用@Value;
2、获取对象主要使用@Component和@ConfigurationProperties(prefix = “xxx”)。