ConfigurationProperties是Spring Framework的一个注解 用于将配置文件,环境变量中的值映射到一个Java对象的属性上。
简单使用
user:
admin:
name: admin
password: 123456
age: 18
@Data
@Component
@ConfigurationProperties(prefix = "user.admin")
public class User {
private String name;
private String password;
private Integer age;
}
测试:
@SpringBootTest
class UserTest {
@Autowired
private User admin;
@Test
public void test(){
System.out.println(admin);
}
}
输出:可以看见他把属性按照名称已经注入到对象中去了。

类型转换
它还会额外绑我们坐下简单的 类型转换。
public class User {
// ...
// 将 Integer 修改为 String
private String age;
}
测试:age 也 18

级联属性
@Data
public class Profile {
private String account;
private String sex;
}
public class User {
// ...
// 增加一个 profile
private Profile profile;
}
user:
admin:
name: admin
password: 123456
age: 18
# 增加级联属性配置
profile:
account: adminAccount
sex: F
测试:

数组属性
public class User {
// ...
// 增加一个数组
private String[] alias;
}
user:
admin:
name: admin
password: 123456
age: 18
profile:
account: adminAccount
sex: F
alias:
- 管理员
- 超级管理员
- Admin
# 两种配置方式都可以
# alias[0]: 管理员
# alias[1]: 超级管理员
# alias[2]: Admin

什么时候赋的值呢?
public class User {
// ...
// 增加一个构造函数
public User() {
System.out.println("create user");
}
}
它是先创建对象(Spring 创建的因为有 @Component),然后再赋值

与@Bean 结合使用
首先将 User.java 上的 @Component 与 @ConfigurationProperties 去掉
@Configuration
public class UserConfig {
@Bean
@ConfigurationProperties(prefix = "user.admin")
public User user(){
User user = new User();
user.setAge("19");
return user;
}
}
可以看出来在 @Bean 里面赋的值被覆盖了。就相当与它是在 return 后对返回的对象又对他进行了赋值














![[机器学习]--线性回归算法](https://i-blog.csdnimg.cn/direct/38189eeaa18b44b282fedae6a3463eea.png)


![自开发多功能Vue组件:可定义滚动速度[回到顶部/底部]图标组件的安装与使用!](https://i-blog.csdnimg.cn/direct/541bdb7a523748a4bda4c1dc83d9b3ed.jpeg#pic_center)


