Java 在Spring项目中获取配置的更好实践
哪种练习更好?我是否应该在spring文件的下面的代码中删除我正在使用的所有配置,这些配置应该取自某个配置文件?或者直接在代码中使用它们就可以了Java 在Spring项目中获取配置的更好实践,java,spring,web-services,Java,Spring,Web Services,哪种练习更好?我是否应该在spring文件的下面的代码中删除我正在使用的所有配置,这些配置应该取自某个配置文件?或者直接在代码中使用它们就可以了 String endPoint = "dsadas"; HttpClientConfig httpClientConfig = new HttpClientConfig .Builder(endPoint) .multiThreaded(true) .r
String endPoint = "dsadas";
HttpClientConfig httpClientConfig = new HttpClientConfig
.Builder(endPoint)
.multiThreaded(true)
.readTimeout(50000)
.connTimeout(60000)
.maxTotalConnection(40)
.build();
在这个无状态-短暂-云本机微服务的时代,您的工件应该与环境无关。这意味着,无论是保留在代码中(这是最糟糕的想法),还是保留在配置文件中(最终可能会出现在最终工件中),都不是一个好主意。但是,如果您能够从环境变量、命令行参数或外部配置文件重写配置,则后者正好适合开发
我建议您阅读,好吧,您可以使用现有的机制从中获取配置。使用
@Value(${configuration\u key:default\u Value})
注释(假设您以某种方式注册了属性资源占位符配置器)很容易做到这一点。
代码示例:
@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
):
Spring允许您使用不同类型的配置,如命令行参数、系统属性、配置文件、Spring云配置等。配置也可以是特定于概要文件和环境的。更多信息,请访问:,。如果以后要更改这些配置,会发生什么情况?
http.client.endpoint=value
http.client.multiThreaded=value
http.client.readTimeout=value
http.client.connTimeout=value
http.client.maxTotalConnection=value