查看原文
其他

Spring Boot读取配置的几种方式

2017-10-25 javastack Java技术栈


读取application文件

在application.yml或者properties文件中添加:

info.address=USA

info.company=Spring

info.degree=high

@Value注解读取方式

  1. import org.springframework.beans.factory.annotation.Value;

  2. import org.springframework.stereotype.Component;

  3. @Component

  4. public class InfoConfig1 {

  5.    @Value("${info.address}")

  6.    private String address;

  7.    @Value("${info.company}")

  8.    private String company;

  9.    @Value("${info.degree}")

  10.    private String degree;

  11.    public String getAddress() {

  12.        return address;

  13.    }

  14.    public void setAddress(String address) {

  15.        this.address = address;

  16.    }

  17.    public String getCompany() {

  18.        return company;

  19.    }

  20.    public void setCompany(String company) {

  21.        this.company = company;

  22.    }

  23.    public String getDegree() {

  24.        return degree;

  25.    }

  26.    public void setDegree(String degree) {

  27.        this.degree = degree;

  28.    }

  29. }

@ConfigurationProperties注解读取方式

  1. @Component

  2. @ConfigurationProperties(prefix = "info")

  3. public class InfoConfig2 {

  4.    private String address;

  5.    private String company;

  6.    private String degree;

  7.    public String getAddress() {

  8.        return address;

  9.    }

  10.    public void setAddress(String address) {

  11.        this.address = address;

  12.    }

  13.    public String getCompany() {

  14.        return company;

  15.    }

  16.    public void setCompany(String company) {

  17.        this.company = company;

  18.    }

  19.    public String getDegree() {

  20.        return degree;

  21.    }

  22.    public void setDegree(String degree) {

  23.        this.degree = degree;

  24.    }

  25. }

读取指定文件

资源目录下建立config/db-config.properties:

db.username=root

db.password=123456

@PropertySource+@Value注解读取方式

  1. @Component

  2. @PropertySource(value = { "config/db-config.properties" })

  3. public class DBConfig1 {

  4.    @Value("${db.username}")

  5.    private String username;

  6.    @Value("${db.password}")

  7.    private String password;

  8.    public String getUsername() {

  9.        return username;

  10.    }

  11.    public void setUsername(String username) {

  12.        this.username = username;

  13.    }

  14.    public String getPassword() {

  15.        return password;

  16.    }

  17.    public void setPassword(String password) {

  18.        this.password = password;

  19.    }

  20. }

注意:@PropertySource不支持yml文件读取。

@PropertySource+@ConfigurationProperties注解读取方式

  1. @Component

  2. @ConfigurationProperties(prefix = "db")

  3. @PropertySource(value = { "config/db-config.properties" })

  4. public class DBConfig2 {

  5.    private String username;

  6.    private String password;

  7.    public String getUsername() {

  8.        return username;

  9.    }

  10.    public void setUsername(String username) {

  11.        this.username = username;

  12.    }

  13.    public String getPassword() {

  14.        return password;

  15.    }

  16.    public void setPassword(String password) {

  17.        this.password = password;

  18.    }

  19. }

Environment读取方式

以上所有加载出来的配置都可以通过Environment注入获取到。

  1. @Autowired

  2. private Environment env;

  3. // 获取参数

  4. String getProperty(String key);

总结

从以上示例来看,Spring Boot可以通过@PropertySource,@Value,@Environment,@ConfigurationProperties来绑定变量。

推荐阅读



Spring Cloud是什么,和Dubbo对比呢?

SpringCloud注册中心高可用搭建

SpringCloud Eureka自我保护机制

SpringCloud服务安全连接

SpringCloud配置中心高可用搭建

SpringCloud配置中心客户端读取配置

SpringCloud动态刷新配置信息

SpringCloud配置中心内容加密


看完有没有收获?

分享到朋友圈给更多的人吧。




  Java技术栈  
微信公众号:「Javastack

分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。


 ▼长按二维码关注我们↓↓↓


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存