Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.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项目中共享API密钥_Java_Oop_Parse Platform - Fatal编程技术网

如何在整个Java项目中共享API密钥

如何在整个Java项目中共享API密钥,java,oop,parse-platform,Java,Oop,Parse Platform,我正在编写一个Java库,它允许用户通过RESTAPI与解析数据库交互。为了发送每个请求,每个请求头必须包含两个特定于用户给定项目的API键。我希望用户只能使用这两个键一次初始化一个解析类,以便每次需要用户向RESTAPI发送请求时,这些操作类(配置和发送请求,并根据操作是否为保存、更新、查询等而变化)可以轻松访问这些密钥并将其添加到请求中 我正在尝试初始化面向用户的解析类,如下所示: Parse parseDB = new Parse("API id1", "API id2"); 然而,在剩

我正在编写一个Java库,它允许用户通过RESTAPI与解析数据库交互。为了发送每个请求,每个请求头必须包含两个特定于用户给定项目的API键。我希望用户只能使用这两个键一次初始化一个解析类,以便每次需要用户向RESTAPI发送请求时,这些操作类(配置和发送请求,并根据操作是否为保存、更新、查询等而变化)可以轻松访问这些密钥并将其添加到请求中

我正在尝试初始化面向用户的解析类,如下所示:

Parse parseDB = new Parse("API id1", "API id2");
然而,在剩余的时间里,用户应该只能够与ParseObject交互,当调用save或对这些对象执行其他操作时,ParseObject实例会创建一个Parse命令类实例,负责实际发出请求,如下所示:

ParseObject obj = new ParseObject("classname");
obj.save();
//this will create an instance of a ParseCommand class, which will actually send the request
我不确定这是否是一个好的OO设计,虽然我很确定有更好的方法可以做到这一点,但我不知道在第一次初始化Parse对象之后,这些ParseCommand类应该如何访问这两个API键。如果有人对如何访问这些密钥的最佳实践有任何建议,我们将不胜感激


谢谢你的时间

如果使用Spring,可以将Parse属性注入到ParseObject中。注入的Parse-type属性可以是单例的,您也可以通过构造函数注入将api键注入到解析bean中。您的API密钥可以从代码中取出,并以这种方式在SpringXML中配置。下面的片段将告诉你一个想法

<bean id="parseObj" class="com.parse.ParseObject">
      <property name="parseDB" ref="parse"/>
</bean>



  <bean id="parse" class="com.parse.ParseDB" scope="singleton">
        <constructor-arg>
            <constructor-arg type="java.lang.String" value="API-KEY1"/>
            <constructor-arg type="java.lang.String" value="API-KEY2"/>
        </constructor-arg>
   </bean>


感谢Moshe提出静态变量,我没有想到这一点,虽然我知道静态变量在OOP中不被认为是好的样式,但它对我来说非常有效。我在Parse类中声明了两个静态变量,在每个ParseCommand类中,我只是通过Parse.APIKey1和Parse.APIKEy2访问每个API键。这是一个简单的解决方案,但在我的例子中,效果很好。

也许可以将API键设置为静态变量?非常感谢您的回答,出于易于实现的考虑,我目前正在使用Moshe的静态变量建议,但我肯定会尽快尝试!