哪种做法更好?我应该在spring文件中取出我在下面的代码中使用的所有配置,这应该从一些配置文件中获取?或者直接在代码中使用它们很好吗?
String endPoint = "dsadas";
HttpClientConfig httpClientConfig = new HttpClientConfig
.Builder(endPoint)
.multiThreaded(true)
.readTimeout(50000)
.connTimeout(60000)
.maxTotalConnection(40)
.build();
答案 0 :(得分:2)
在这个无状态 - 短暂 - 云原生微服务的时代,你的工件应该与环境无关。这意味着既不保留代码(这是最糟糕的想法)也不保留在最终工件中的配置文件中是一个好主意。但是,如果您能够从环境变量或命令行参数或外部配置文件覆盖配置,则后者适合开发。
我建议你阅读12 factor App,https://content.pivotal.io/blog/beyond-the-twelve-factor-app
答案 1 :(得分:0)
好吧,您可以使用现有机制从Spring Environment获取配置。使用@Value(${configuration_key:default_value})
注释很容易(假设您以某种方式注册了PropertySourcesPlaceHolderConfigurer
)。
代码示例:
@Configuration
public class AppConfiguration {
@Value("${http.client.endpoint:dsadas}")
private String endPoint;
@Value("${http.client.multiThreaded:true}")
private boolean multiThreaded;
@Value("${http.client.readTimeout:50000}")
private int readTimeout;
@Value("${http.client.connTimeout:60000}")
private int connTimeout;
@Value("${http.client.maxTotalConnection:40}")
orivate int maxTotalConnection;
@Bean
private HttpClientConfig httpClientConfig() {
return HttpClientConfig httpClientConfig = new HttpClientConfig
.Builder(endPoint)
.multiThreaded(multiThreaded)
.readTimeout(readTimeout)
.connTimeout(connTimeout)
.maxTotalConnection(maxTotalConnection)
.build();
}
}
配置文件(application.properties
):
http.client.endpoint=value
http.client.multiThreaded=value
http.client.readTimeout=value
http.client.connTimeout=value
http.client.maxTotalConnection=value
Spring允许您使用不同类型的配置,例如命令行参数,系统属性,配置文件,Spring Cloud Config等。此外,配置可以是配置文件和环境特定的。有关详情,请访问:Properties & configuration,Externalized Configuration。