SpringBoot配置类注解【@ConfigurationProperties和@EnableConfigurationProperties】

@ConfigurationProperties

案例代码:

@Data
@ConfigurationProperties(prefix = "spring.httpclient")
public class HttpClientProperties {

    private Integer connectTimeOut=1000;

    private Integer socketTimeOut=10000;

    private String agent="agent";

    private Integer maxConnPerRoute=10;

    private Integer maxConnTotal=50;

}

看到这个注解,首先需要想到肯定跟配置文件有关,然后配置文件里存在以“spring.httpclient”开头的属性。
查看配置文件,确实存在这些属性:

spring.httpclient.connectTimeOut=100
spring.httpclient.socketTimeOut=10000
spring.httpclient.agent=agent
spring.httpclient.maxConnPerRoute=10
spring.httpclient.maxConnTotal=50

@ConfigurationProperties的作用就是将配置文件里的属性值映射到被注解的类里面。

@EnableConfigurationProperties

案例代码:

@Configuration
//HttpClient.java存在的情况下,才加载HttpClientAutoConfiguration
@ConditionalOnClass(HttpClient.class)
//将HttpClientProperties作为一个bean注入spring容器中
@EnableConfigurationProperties(HttpClientProperties.class)
public class HttpClientAutoConfiguration {

    @Autowired
    private HttpClientProperties properties;

//    public HttpClientAutoConfiguration(HttpClientProperties properties) {
//        this.properties = properties;
//    }

    @Bean
    //在用户未定义httpClient这个bean时,才加载
    @ConditionalOnMissingBean
    public HttpClient httpClient() {
        RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(properties.getConnectTimeOut())
                .setSocketTimeout(properties.getSocketTimeOut()).build();
        HttpClient client= HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).setUserAgent(properties.getAgent())
                .setMaxConnPerRoute(properties.getMaxConnPerRoute()).setConnectionReuseStrategy(new NoConnectionReuseStrategy()).build();
        return client;
    }

}

这个注解跟上面的注解很相似,前面多了个Enable。什么意思呢?如果一个类只是被@ConfigurationProperties注解,而没有使用@Component,那么该类其实是没有被spring容器管理的。上面HttpClientProperties类其实就是没有被spring管理,它只是完成了跟配置文件的映射。
@EnableConfigurationProperties的作用就是将HttpClientProperties类注入到spring容器中,这样用的时候就可以直接从spring容器中取出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值