Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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在GAE中设置环境变量-不在主代码中公开?或者以其他方式隐藏应用程序使用的键?_Java_Google App Engine - Fatal编程技术网

如何使用Java在GAE中设置环境变量-不在主代码中公开?或者以其他方式隐藏应用程序使用的键?

如何使用Java在GAE中设置环境变量-不在主代码中公开?或者以其他方式隐藏应用程序使用的键?,java,google-app-engine,Java,Google App Engine,我正在用Java在GAE上开发一个web应用程序,我将在Github上打开这个web应用程序的代码 但是,我不喜欢在代码中公开一些API键。因此,我正在寻找一种方法来存储应用程序可以获得的一些数据,而不必在Github上发布的工作应用程序代码中显示这些数据 例如,这个servlet使用.getenv()和通常的环境变量获取API密钥,还有其他方法吗?从Google开发者控制台设置环境变量,或者安全地存储并从GAE数据存储中获取环境变量 通常通过外部.properties文件(和类)完成。假设您有

我正在用Java在GAE上开发一个web应用程序,我将在Github上打开这个web应用程序的代码

但是,我不喜欢在代码中公开一些API键。因此,我正在寻找一种方法来存储应用程序可以获得的一些数据,而不必在Github上发布的工作应用程序代码中显示这些数据


例如,这个servlet使用.getenv()和通常的环境变量获取API密钥,还有其他方法吗?从Google开发者控制台设置环境变量,或者安全地存储并从GAE数据存储中获取环境变量

通常通过外部
.properties
文件(和类)完成。假设您有一个用于演示开发,一个用于生产(第三个用于测试也是很常见的)。所以您可以将开发文件上传到Github中,并为自己保留生产配置(也不要忘记将其添加到
.gitignore

基本上,您的
resources
文件夹中将有3个文件:

  • myapp.prod.properties
  • myapp.dev.properties
  • myapp.test.properties
(命名模式由您决定,它可能只是
prod.properties
,但在这种情况下,它可能与第三方库中的某些文件冲突)

有一个关于如何读取这些文件的教程:和JavaDoc

你需要像这样的东西:

Properties props = new Properties();
String name;
if (SystemProperty.Environment.Value.Development == SystemProperty.environment.value()) {
    name = "myapp.dev.properties";
} else {
    name = "myapp.prod.properties";
}
props.load(Classname.class.getClassLoader().getResourceAsStream(name));
大多数Java web框架都可以自动为您做到这一点。例如,在Spring中,请查看配置文件、
@PropertySource
ConfigurableApplicationContext