springBoot读取配置文件

1.单个获取

1.1.通过Environment读取

配置文件

test:
  user:
    name: eden
    age: 18
    penName:
    email: 163.com
    fans: eat,sport,read

调用

    @Autowired
    Environment environment;
    @Test
    public void readByEnvironment(){
        System.out.println(environment.getProperty("test.user.email"));
    }

1.2.通过@value读取

配置文件

test:
  user:
    name: eden
    age: 18
    penName:
    email: 163.com
    fans: eat,sport,read

调用

    @Value("${test.user.name}") //读取配置文件
    private String name;
    @Value("${test.user.penName:大地瓜的豆}") //设置默认值,配置里读取不到就用默认值
    private String penName;
    @Value("${test.user.email:#{null}}") // 默认值设为null
    private String email;
    @Value("${test.user.fans}") //可用数组或集合接收配置里的数组类型
    private List<String> fans;
    @Test
    public void readByValues(){
        System.out.println("name:"+name);
        System.out.println("penName:"+penName);
        System.out.println("email:"+email);
        for (String fan : fans) {
            System.out.println("fan:"+fan);
        }
    }

2.全部获取

通过Environment和@Value 都是单个获取,如果要读取多个属性,可以用@ConfigurationProperties。
注意:
1.必须要有get,set
2.要结合@Component或 @Configuration表示交给spring容器处理,或者在启动类加上@EnableConfigurationProperties(GetConfiguration2.class)
3.从spring容器里的获取的对象才有属性值,不要自己new对象

bean

@Component
@ConfigurationProperties(prefix = "test.user")
@Data
public class GetConfiguration2 {
    private String name;
    private Integer age;
}

调用

    @Autowired
    GetConfiguration2 getConfiguration2;
    @Test
    public void readByConfigurationProperties(){
        System.out.println(getConfiguration2.getName()+"--"+getConfiguration2.getAge());
    }

3.指定文件获取

上面读取配置文件的方法(Environment、@Value、@ConfigurationProperties),会读取跟目录下所有的配置文件,如果存在同样的 key 值,最后一个处理的会覆盖前面的
最好指定要读取的配置文件@PropertySource(“classpath:文件名”)

4.@value扩展

    // 赋予默认值   
    @Value("chinese")  
    private String language;

     // 获取系统参数
    @Value("#{systemProperties['os.name']}")
    private String systemPropertiesName;

     // 表达式计算
    @Value("#{ T(java.lang.Math).random() * 100 }")
    private double randomNumber;

    // 获取其他bean的属性(其它bean定义见下面)
    @Value("#{otherBean.game}") 
    private String game;

    // 指定分隔符拆分
    @Value("#{'${test.user.fans}'.split('a')}")
    private List<String> numList;

    // 获取资源
    @Value("classpath:application.yml")
    private Resource resourceFile;

    // 获取连接
    @Value("http://www.choupangxia.com")
    private URL homePage;

    // #{}通过?:赋予默认值
    @Value("#{systemProperties['port']?:'8888'}")
    private String port;
@Service
public class OtherBean {
    @Value("部落冲突")
    private String game;

    public String getGame() {
        return game;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值