springboot之@ConfigurationProperties注解

当我们需要在application.yml中配置一些额外的属性的时候,如:

servers:
  ip-address: 192.168.1.2
  port: 8081
  timeout: -1

比较好的方法是:将其封装成一个实体类,然后使实体类自动引用配置文件中的属性,这时候就需要用到@ConfigurationProperties注解。封装的实体类如下:

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@Data
@ConfigurationProperties(prefix = "servers")
public class ServerConfig {
    private String ipAddress;
    private int port;
    private long timeout;
}

说明:首先要使该类成为springboot管控的bean,因此要加上@Component注解,然后加上@ConfigurationProperties注解并添加prefix,以此告诉此类要引用哪些配置属性。

这样我们就完成了该类的属性绑定,如下:

@SpringBootTest
class SpringbootApplicationTests {

    @Autowired
    private ServerConfig serverConfig;

    @Test
    void test1() {
        System.out.println(serverConfig.getIpAddress());
        System.out.println(serverConfig.getPort());
        System.out.println(serverConfig.getTimeout());
    }

}

最后说明:

1、@ConfigurationProperties注解不仅可以用于自定义bean的属性绑定,还可以用于第三方bean的自动绑定。

2、解除@ConfigurationProperties注释警告,如图:

添加如下依赖即可:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
</dependency>

 3、@ConfigurationProperties绑定属性支持属性名宽松绑定,如上文配置中的ip-address属性名依然可以绑定到自定义实体类中的属性ipAddress中,但是@Value注解却不支持宽松绑定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值