ConfigurationProperties使用

ConfigurationPropertiesSpring 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);
    }
}

输出:可以看见他把属性按照名称已经注入到对象中去了。
image.png

类型转换

它还会额外绑我们坐下简单的 类型转换

public class User {
    // ...

    // 将 Integer 修改为 String
    private String age;
}

测试:age18
image.png

级联属性

@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

测试:
image.png

数组属性

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

image.png

什么时候赋的值呢?

public class User {
    // ...
    
    // 增加一个构造函数
    public User() {
        System.out.println("create user");
    }
}

它是先创建对象(Spring 创建的因为有 @Component),然后再赋值
image.png

与@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 后对返回的对象又对他进行了赋值
image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

假女吖☌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值