Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Spring项目中获取配置的更好实践_Java_Spring_Web Services - Fatal编程技术网

Java 在Spring项目中获取配置的更好实践

Java 在Spring项目中获取配置的更好实践,java,spring,web-services,Java,Spring,Web Services,哪种练习更好?我是否应该在spring文件的下面的代码中删除我正在使用的所有配置,这些配置应该取自某个配置文件?或者直接在代码中使用它们就可以了 String endPoint = "dsadas"; HttpClientConfig httpClientConfig = new HttpClientConfig .Builder(endPoint) .multiThreaded(true) .r

哪种练习更好?我是否应该在spring文件的下面的代码中删除我正在使用的所有配置,这些配置应该取自某个配置文件?或者直接在代码中使用它们就可以了

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