2012-04-04 18 views
0

私はウェブアプリケーションを設計しています。だから私はコントローラを作成する段階にあります。まず、このメソッドのシグネチャでインターフェイスを作成します。私はこのような値を格納する第二のパラメータを渡すために必要とされる値を返すためにので、ばね使用している実装で特定のクラスがある場合とない場合のデザインインターフェイス

public String user(String code); 

public String user(Model model, String code){ 
     String name = userservice.findUserName(code); 

     model.addAttribute(name); 
     return "userView"; 
} 

OK、あなたは私の実装クラスがインタフェースのメソッドをオーバーライドされていないため、問題がある見ることができますが、私はインターフェイスプロジェクトにパラメータとの依存関係を追加しないように、私はしたいので、インターフェース(設計)はテクノロジーに中立です。

いくつかの人が私にいくつかのアドバイスを与えることを願っています。ありがとうございました。

+0

"インタフェースプロジェクトにパラメータや依存関係を追加したくありません"この文では説明が必要です。通常、春には、コントローラメソッドを定義した後、それをRequestMappingに配線するアノテーションを追加します。これについて議論することはできますが、あなたのコントローラーにこのような設定が不要であるように思えますか?その文は本当に不明です。 –

+0

あなたは正しいです、私の質問は明確ではありませんでした。私が望むのは、Webレイヤー用のインターフェイスを設計することですが、フレームワークの特定のクラス(春など)を含めるのではなく、実装する人が使用することを決定したテクノロジを使用できるようにすることです。 – OJVM

答えて

3

私はなど、コーディング規約のアイデアを得るためにあなたには、いくつかのexample Spring MVC appsを見てお勧めしたい

コントローラは、インタフェースに書き込まれる傾向がない - 私はそれがとにかく行って見たことがありません。あなたはあなたのサービスとDAOのクラスが必要になります。

ユーザーメソッドのコードはクラシックサービスレイヤのように見えますが、名前付け規則は通常getUserまたはgetUserForIdのようになります。あなたはコントローラからこれを呼び出すのであれば、あなたはこのように、Model argを心配する必要はありません。

userServiceは次のように定義されて
model.addAttribute("user", userService.getUserForId(code)); 

@Inject 
UserService userService; 

UserServiceはインターフェイスであり、 userServiceは、Spring/IoCコンテナによって自動的に実装されています。

+0

私は、Webレイヤ(コントローラ)は通常インタフェースによって設計されているのではないことを理解していますが、これは(サービスのデータレイヤのように)良い習慣になっているためです。私のシステムはいくつかのビュー(jspの)を持っているので、私はこれをやりたいですが、他のシステム(おそらくREST)にいくつかのサービスを提供するので、私は主な操作を抽象化しようとしています。 – OJVM

+0

コントローラーは経路特異的である傾向があります。私はあなたが本当にあなたのサービスのためのインターフェイスを定義するために到達していると思いますか?これらのサービスは、ニックドがここで説明しているように、フレームワークに不可知らせることができます。コントローラは実際には「Webコントローラ」と考えることができます。具体的な機能は、Webリクエストを受け取り、適切なサービスを呼び出し、Webレスポンスをパッケージ化することです。 –

+0

あなたの答えをタンクしてください、私はそれらの概念を実践しています。 – OJVM

関連する問題