如何用Java存储项目的信任。通常情况下,我使用*.properties将其存储在'src/main/resources/‘中。如何为开发、本地、生产环境存储项目配置的最佳方法?
我尝试使用带有以下结构的*.prop
resources
|_ config
|_local
|_development
|_production
|_environment.properties
我要避免它的结构。
发布于 2014-10-07 07:59:30
在我看来,这里最好的方法是有一个内部和外部的配置。内部配置包含所有默认设置,并将包含在资源文件夹中。外部配置是与您的程序一起部署的属性文件,随后将读取该文件并重写任何默认设置。
对于测试,这是很好的,因为您已经拥有运行程序所需的一切,而不需要任何额外的配置。在生产中,您可以根据需要重写一个或多个值,而无需重写程序。有关如何加载配置的示例,请参阅下面的内容:
private static Properties getConfiguration() throws IOException {
final Properties configProperties = new Properties();
// Attempt to read internal configuration
InputStream configStream = null;
try {
configStream = Main.class.getResourceAsStream("/configuration.properties");
if(configStream != null) {
configProperties.load(configStream);
}
} finally {
if(configStream != null) {
configStream.close();
}
configStream = null;
}
// Attempt to read external configuration (overriding as necessary)
try {
final File configFile = new File("configuration.properties");
if(configFile.isFile()) {
configStream = new FileInputStream(configFile);
configProperties.load(configStream);
}
} finally {
if(configStream != null) {
configStream.close();
}
}
return configProperties;
}
一定要根据需要调整路径,尽管我个人更喜欢将主配置保留在我的资源类路径中和外部的一个明显位置上。
注意,根据配置中包含的信息,您可能希望有意从内部配置中排除一些信息。例如,连接到数据库的信息。在这种情况下,在测试时,您还可以自己提供包含所有缺失的数据库连接信息的外部配置。部署时,省略外部配置并为客户端创建一个新配置(最佳实践要求检查这些参数是否存在,以获得良好的度量,如果丢失,则抛出适当的异常)。
希望这能帮上忙!
发布于 2020-07-29 12:19:49
根据我的经验,在回购中保留几个配置/应用程序属性文件是一种正常的方法,但在构建可交付的过程中删除多余的配置/应用程序属性文件。
另外,我想补充的是,最好将这两件事分开:应用程序属性和应用程序配置。
第一个应用程序可以用来保存一个内部的应用程序设置,例如:可用线程数、重试数等。应用程序属性文件是应用程序的必要部分。通常,它位于<project_name>/src/main/resources
目录中。
应用程序配置更多的是客户端的东西。通常,它用于保持配置,可以/应该由客户/用户更改。换句话说,该文件通常包含与应用程序的业务逻辑相关的配置。几乎总是需要该文件,但是一些应用程序可以使用内部默认配置来提供高可用性,而不仅仅依赖于配置文件。无论是在项目根文件夹中还是在一个特殊目录:<project_name>/conf
中,都可以将配置文件放入其中。
https://softwareengineering.stackexchange.com/questions/258282
复制相似问题