yml 配置文件
yml 中如何配置
在 yml 中可以配置 对象、数组、对象数组等信息,
# 对象类型
user:
userName: ItJiange # 表示对象中属性
age: 23
# 数组类型
city:
- lanzhou
- xian
# 对象数组
game:
- gameName: yuanshen
version: 4.2
- gameName: csgo
version: 2.0
在类中引用
方式一(@Value 注解)
@Slf4j
@Configuration
public class TestYmlConfig {
// 1. 对象类型取值
@Value("${user.userName}")
private String userName;
@Value("${user.age}")
private int age;
// 2. 数组类型取值
@Value("${city[0]}")
private String city1;
@Value("${city[1]}")
private String city2;
// 3. 对象数组
@Value("${game[0].gameName}")
private String gameName;
@Value("${game[0].version}")
private String version;
@Value("${game[1].gameName}")
private String gameName2;
@Bean
public void testYmlMsg() {
log.info("用户昵称:{}", userName); // 用户昵称:ItJiange
log.info("用户年龄:{}", age); // 用户年龄:23
log.info("城市一:{}", city1); // 城市一:lanzhou
log.info("城市二:{}", city2); // 城市二:xian
log.info("游戏 1 名称:{}", gameName); // 游戏 1 名称:yuanshen
log.info("游戏 2 名称:{}", version); // 游戏 2 名称:4.2
log.info("游戏 2 :{}", gameName2); // 游戏 2 :csgo
}
}
方式二(注入 Environment 对象引用)
还可以调用Environmen
对象中getProperty()
方法引用
@Slf4j
@Configuration
public class TestYmlConfig {
@Autowired
private Environment environment;
@Bean
public void testYmlMsg() {
log.info("用户昵称:{}", environment.getProperty("user.userName")); // 用户昵称:ItJiange
}
}
方式三(利用 @configurationProperties 注入属性值)
还可以直接将配置信息,赋值给实体类字段
实体类:
@Data
@Component
@ConfigurationProperties(prefix = "user")
public class User {
private String userName;
private int age;
}
测试:
@Configuration
@Slf4j
public class TestYmlConfig2 {
@Autowired
private User user;
@Bean
public void testUser() {
log.info(user.getUserName());
log.info(user.getAge() + "");
}
}
执行结果: