0

Spring Security を組み合わせて Spring MVC で Web アプリケーションを構築しています。私の質問は、アプリケーションの内部設計に関するものです。より具体的には、コントローラーの設定方法です。私は、ドメイン オブジェクト (所有者コントローラー、ペット コントローラー、獣医コントローラーなど) ごとに 1 つのコントローラーがあるペット クリニックの例に多くの刺激を受けました。

アプリケーションに管理バックエンド インターフェイスを導入したいと考えています。これは、各コントローラーに管理者固有のメソッドと @RequestMappings を作成することを意味します。リクエスト マッピング パスは、intercept-url パターンによって保護されるため、それらがどこにあるかを気にする必要はありません。ただし、このソリューションは少しエレガントではありません。

ペットクリニックの例では、次のようになります。

@Controller
@SessionAttributes(types = Owner.class)
public class OwnerController {

   private final ClinicService clinicService;

   // Front end method
   @RequestMapping(value = "/owners/find", method = RequestMethod.GET)
   public String initFindForm(Map<String, Object> model) {
      model.put("owner", new Owner());
      return "owners/findOwners";
   }


   // Admin method
   @RequestMapping(value = "/admin/owners/find", method = RequestMethod.GET)
   public String initFindForm(Map<String, Object> model) {
       model.put("owner", new Owner());
   //Admin view
       return "admin/owners/findOwners";
  }

}

他の選択肢は、各 @RequestMapping (またはアクションごと) に 1 つのコントローラーを用意することです。

 @Controller
 @RequestMapping(value = "/admin", method = RequestMethod.GET)
 public class AdminController {

    private final ClinicService clinicService;

    // Admin method
    @RequestMapping(value = "/owners/find", method = RequestMethod.GET)
    public String initFindForm(Map<String, Object> model) {
        model.put("owner", new Owner());
        //Admin specific view
        return "admin/owners/findOwners";
    }

  }

私の意見では、これは多くのメソッドを備えた非常に堅牢なコントローラーにつながると思います。

3 番目のオプションは、それらのいくつかの種類を組み合わせることです。

  @Controller
  @SessionAttributes(types = Owner.class)
  public class AdminOwnerController {

    private final ClinicService clinicService;

    // Admin method
    @RequestMapping(value = "/admin/owners/find", method = RequestMethod.GET)
    public String initFindForm(Map<String, Object> model) {
        model.put("owner", new Owner());
       //Admin view
       return "admin/owners/findOwners";
}

}

私の質問は、そのための標準的なアプローチは何ですか?

4

1 に答える 1