1

JSONをモバイルアプリに提供するコントローラー(Spring Controller)があります。

さまざまなサーバーが当社のソフトウェアを実行します。すべてがモバイル リクエストを処理するように構成されるわけではありません。

リクエストを処理するために必要なさまざまなシステム パラメータを含むオブジェクトの ID を持つクラス Integer の Bean を追加しました。

この Bean は xml で定義され、コントローラーに自動配線されます。

オートワイヤーは (required = false) を使用するため、xml で定義された値なしで実行できます。

xml で定義されていない場合、autowired Integer が実際に null であることを確認しました。

ここでやりたいことは、Integer が null の場合は 1 つのメソッドに一致し、Integer が null でない場合は通常のメソッドに一致するように、requestmappings に追加することです (基本的に、標準の json エラー オブジェクトで応答します)。

これはある種の AOP を使えばかなり簡単に思えますが、私は Spring の使用以外の経験がほとんどありません。Requestmapping アノテーションのほとんどの条件情報は、サーバー側の変数ではなく、リクエスト パラメータに基づいているようです。

何か案は?

4

1 に答える 1

2

property-placeholderクラスパスからプロパティファイルをロードするには、 a を使用する方がよいと思います。このようにして、同じwarファイルを異なるサーバーにデプロイし、サーバーごとに異なるプロパティ ファイルを使用することができます (AS クラスパスに配置します)。
一度それをしたら、コントローラーで (またはコントローラーのコードをクリーンなままにしたい場合はインターセプターで) 変数を使用して、次のようなことを行うことができます。

@Controller
public class MyController{
    @Value("${mobile.enabled}")
    private boolean mobileEnabled;

@RequestMapping("/mobile")
public Object json(){
    if (!mobileEnabled)
        throw new IllegalStateException("This server can't do it!");
    }
    //create the json
    return result;
}

そして、次のようなプロパティ ファイル:

mobile.enabled=true

有効にする場合は false、そうでない場合は false 。

于 2013-07-03T11:05:23.080 に答える