
开发中难免会有使用到定义属性的时候,那学习springboot的肯定都知道获取方式,因为工作常用,我简单归纳几种方式以便需时查看。
1.1,yml格式常见的几种方式:application.yml配置文件:
company: id: 1 nanme: 东方红 describe: 一种颜色,美好的颜色
第一种方式:
使用@ConfigurationProperties注解
@Data
@ToString
@Component
@ConfigurationProperties(
prefix = "company"
)
public class Company {
private Long id;
private String name;
private String describe;
}
第二种方式:
使用@value注解
@Data
@ToString
@Component
public class Company {
@Value(value = "${company.id}")
private Long id;
@Value(value = "${company.name}")
private String name;
@Value(value = "${company.describe}")
private String describe;
}
测试类:
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestYml {
@Autowired
private Company company;
@Test
public void test01() {
System.out.println(company);
}
}
1.2,properties格式常见的几种方式:
company.properties配置文件:
company.id=1 company.name=小小红旗 company.describe=人民的精神信仰
第一种方式:
使用@value注解
@Data
@ToString
@Component
@PropertySource(value = {"classpath:company.properties"}, encoding = "UTF-8") //加载外部资源文件
public class Company {
@Value(value = "${company.id}")
private Long id;
@Value(value = "${company.name}")
private String name;
@Value(value = "${company.describe}")
private String describe;
}
第二种方式:
使用@ConfigurationProperties注解
@Data
@ToString
@Component
@PropertySource(value = {"classpath:company.properties"}, encoding = "UTF-8") //加载外部资源文件
@ConfigurationProperties(prefix = "company")
public class Company {
private Long id;
private String name;
private String describe;
}
测试类:
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestYml {
@Autowired
private Company company;
@Test
public void test01() {
System.out.println(company);
}
}
2,对比:
| 方式 | 评价 |
|---|---|
| @ConfigurationProperties | 方便,不用每个字段上写,默认全赋值,但是缺点是字段名与属性名必须一致,不然映射不到内容 |
| @Value | 每个字段上都要写上定义的属性名称,可以根据自己需要的进行赋值 |