SpringBoot 获取配置文件数据
@Value注解
sys:
  name: book-value
  age: 12
  flag: true
 
 
@RunWith(SpringRunner.class)
@SpringBootTest
public class BootValueApplicationTests {
    @Value("${sys.name}")
    private String sysName;
    @Value("${sys.age}")
    private Integer sysAge;
    
    @Value("${sys.flag}")
    private Boolean sysFlag;
    @Value("${sys.noValue:123}")
    private String sysNoValue;
    @Test
    public void contextLoads() {
        System.out.println(sysName);
        System.out.println(sysAge);
        System.out.println(sysFlag);
        System.out.println(sysNoValue);
    }
}
 
 
book-value
12
true
123
 
注意的地方
当对应的值不存在时,系统会报错。我们可以给定一个默认值即可。
如下所示:
 @Value("${sys.noValue:123}")
 private String sysNoValue;
@Value("${sys.Value:}")
private String sysNoValue;
 
在这里,sys.noValue这个值是不存在的,我们可以给定一个默认值为123,当然,我们如果不指定默认值的,它的默认值为空字符串。
优缺点
-  
优点:单个使用方便,灵活性高
 -  
缺点:获取配置文件信息多,需要些大量的@Value,不利于开发,增加开发者的工作量
 
Environment对象
首先我们需要引入 Environment.
 如下所示:
@RunWith(SpringRunner.class)
@SpringBootTest
public class BootValueApplicationTests {
    @Autowired
    private Environment environment;
    @Test
    public void getValueByEvi() {
        String name =environment.getProperty("sys.name");
        System.out.println(name);
    }
}
 
 
此时,不会报错,获取的值为空。
 String halo =environment.getProperty("sys.halo");
 System.out.println(halo); // null
 
@ConfigurationProperties
这种方式常用于 配置的数据较多,封装成一个实体类。
@Data
@Component
@ConfigurationProperties(prefix = "sys")
public class SysConfig {
    private String name;
    private Integer age;
    private Boolean flag;
}
 
 
@RunWith(SpringRunner.class)
@SpringBootTest
public class BootValueApplicationTests {
    @Resource
    private SysConfig sysConfig;
    @Test
    public void getValueByConfigurationProperties() {
        System.out.println(sysConfig.getName());
        System.out.println(sysConfig.getAge());
        System.out.println(sysConfig.getFlag());
    }
}
 
测试结果如上所示。










