3

与えられたRESTインターフェースがあります:

POST /calculation
<data>abc</data>

この計算は、サーバー構成に応じて、さまざまな論理「計算機」によって実装できます。

現在、各計算機が実装する必要のあるJavaインターフェースを設計しています。インターフェイスには、RESTサービスごとにメソッドがあります。

すべてのREST(およびHTTP)呼び出しがステートレスであることを考えると、各メソッドは静的である必要があります。ただし、Javaインターフェースで静的メソッドを定義することはできません。この状況に対する適切な回避策はありますか?

メソッドを非静的として定義してから、最初に電卓クラスのインスタンスを作成することができます。インターフェイスでstaticキーワードを使用して、メソッドがステートレスであることを示す方がわかりやすいようです。

4

4 に答える 4

7

ステートレスは静的を意味しません。ステートレスとは、コンポーネントが状態に依存しないことを意味します。インターフェイスの実装全体が実際にはステートレスであるため、コンポーネントと言います-メンバー変数はありません。したがって、実装クラスの複数のインスタンスはまったく問題ありません。特に、Spring や EJB など、それらを管理するコンテキストがある場合。

于 2009-11-12T19:03:58.237 に答える
1

なぜメソッドは静的でなければならないと思いますか?それらは確かに可能性がありますが、それは後で別の実装をプラグインするという点であなたを制限します。メモリ消費などが心配な場合は、質問の最後の段落ですでに述べたように、シングルトンを使用すると静的と同じようになります。

于 2009-11-12T18:53:57.570 に答える
1

通常として宣言されたメソッドと実装クラスを備えたインターフェースが必要であり、次にこれの単一のインスタンスを単純にインスタンス化する必要があるように思われます。メソッド自体が静的である理由自体はありません。

于 2009-11-12T18:58:22.410 に答える