作者:传导网络 | 来源:互联网 | 2023-09-04 13:05
接手一个项目发现里面有一个FeignAutoConfiguration,如下@Configuration内部嵌套一个@Configuration这个如何理解?
接手一个项目
发现里面有一个FeignAutoConfiguration,如下
@Configuration内部嵌套一个@Configuration
这个如何理解?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| @CompileStatic
@Configuration
class FeignAutoConfiguration {
@Configuration
@ConditionalOnClass(OkHttpClient.class)
@ConditionalOnMissingClass("com.netflix.loadbalancer.ILoadBalancer")
@ConditionalOnProperty(value = "feign.okhttp.enabled")
protected static class OkHttpFeignConfiguration {
@Bean
@ConditionalOnMissingBean(ConnectionPool.class)
ConnectionPool httpClientConnectionPool(FeignHttpClientProperties httpClientProperties,
OkHttpClientConnectionPoolFactory connectionPoolFactory) {
Integer maxTotalCOnnections= httpClientProperties.getMaxConnections()
Long timeToLive = httpClientProperties.getTimeToLive()
TimeUnit ttlUnit = httpClientProperties.getTimeToLiveUnit()
return connectionPoolFactory.create(maxTotalConnections, timeToLive, ttlUnit)
}
@ConditionalOnMissingBean(okhttp3.OkHttpClient.class)
okhttp3.OkHttpClient client(OkHttpClientFactory httpClientFactory,
ConnectionPool connectionPool,
FeignHttpClientProperties httpClientProperties) {
Boolean followRedirects = httpClientProperties.isFollowRedirects()
Boolean disableSslValidation = httpClientProperties.isDisableSslValidation()
this.okHttpClient = httpClientFactory.createBuilder(disableSslValidation).
connectTimeout(5000L, TimeUnit.MILLISECONDS).
readTimeout(60000L, TimeUnit.MILLISECONDS).
followRedirects(followRedirects).
connectionPool(connectionPool).build()
return this.okHttpClient
}
...
...
}
} |