SpringBoot 获取配置文件数据
@Value注解
applicaiton.yml
sys:
name: book-value
age: 12
flag: true
BootValueApplicationTests.java
@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;
}
测试类文章来源:https://www.toymoban.com/news/detail-546693.html
@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());
}
}
测试结果如上所示。文章来源地址https://www.toymoban.com/news/detail-546693.html
到了这里,关于【SpringBoot】读取application.yml配置中的三种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!