1

Spring MVC を使用して小さな RESTful アプリケーションを開発しており、汎用コントローラー、サービス、およびエンティティに汎用 CRUD を実装したいと考えています。このエンティティからフィールドを継承するエンティティPersonと 2 つのエンティティがあります (例:Person1Person2)。

それを行う最良の方法は何ですか?

すべてのコントローラーが final である例を見ました。ジェネリックコントローラーを使用するのは悪い習慣ですか? サービスはどうですか?一般的なエンティティを作成するにはどうすればよいですか?

4

2 に答える 2

2

私はすでにこのようなものを開発し、ジェネリックコントローラーを抽象メソッドで抽象化しました

protected abstract RestService<T, ID> getService();

および他のコントローラーは、このコントローラーを拡張してこのメ​​ソッドを実装する必要があります。また、抽象メソッドを使用したサービスに対しても同じことを行いました

protected abstract PagingAndSortingRepository<T, ID> getRepo();

リポジトリを取得して抽象サービス内で使用するには、これらの抽象クラスに @Controller または @Service がないことに注意する必要があります。Controller のサブクラスでも、ルート パスを次のように指定する必要があります。

@Controller
@RequestMapping("/customer")
public class CustomerRestController extends RestController<Customer, Long> {

抽象コントローラーでは、次のような相対パスを使用する必要があります。

@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
@ResponseBody
public ResponseEntity<String> update(@PathVariable ID id,
    @RequestBody T t) {

このソリューションに興味がある場合は、ソース コードを共有できます

于 2013-04-27T10:49:11.603 に答える
1

いいえ、コントローラーを最終的なものにしないことは悪い習慣ではないと思います。実際、私はそれを行うことの魅力を見ることができましたが、最終的なSpringMVCコントローラーを作成したことはありません。

「汎用」コントローラーに関しては、基本クラスのコントローラーを作成することを妨げるものは何もありません。コントローラは単なるPOJOであるため、非常に簡単です。

さらに良いことに、あなたがあなたの支出に見合う最高の価値を得たいのなら、Spring Rooを使ってみませんか?その下にあるすべてのSpringMVCは、ボイラープレートコードを生成します。これを使用してサイトを作成するという面倒な作業をすべて終えたら、rooで生成されたすべてのコードを自分のコードにプッシュして、次の場合に捨てることができます。もう必要ありません。

于 2013-02-22T20:29:32.277 に答える