[スプリング]スプリング5プログラミング入門-15章:簡易Webアプリケーションの構成
6697 ワード
シンプルWebアプリケーションのコンポーネント
簡単なWebアプリケーションの典型的な構成は以下の通りです.
コントローラは実際のWebブラウザの要求を処理します.コントローラの主な役割は次のとおりです.
コントローラは、アプリケーションが提供する機能をユーザ要求に関連付けるメディアであり、提供機能の論理を直接実行しない.その処理を対応する論理を提供するサービスに委任する.
サービスは機能の論理を体現する.サービスにデータベースバインドが必要な場合は、DAOを使用します.DAOは、データベースとWebアプリケーションの間でデータを移動するデータ・アクセス・オブジェクトの略です.アプリケーションは、DAOを使用してデータベースにデータを追加するか、データベースからデータを読み込みます.>
リストや詳細画面などのデータをクエリーする機能のみで、追加の論理がない場合は、コントローラがDAOを直接使用することもできます.
サービスの実装
パスワード変更機能は、サービスで次の論理を実行します.
パスワードを変更するメンバーのデータを
@RequestMapping(method = RequestMethod.POST)
public String submit(@ModelAttribute("command") ChangePwdCommand pwdCmd, Errors errors, HttpSession session) {
...
changePasswordService.changePassword(
authInfo.getEmail(),
pwdCmd.getCurrentPassword(),
pwdCmd.getNewPassword());
...
}
カスタムクラスを作成する理由は、Spring MVCが提供するフォーム値のバインドと検証、およびSpringフォームタグの連動機能を使用するためです.コントローラからDAOにアクセス
サービスメソッドは論理を実行せず、DAOメソッドのみを呼び出して終了するコードです.public class MemberService {
...
public Member getMember(Long id) {
return memberDao.selectById(id);
}
}
この場合、コントローラは、DAOに直接アクセスしても、Webアプリケーションの階層は大きなフレームワーク内で維持されると考え、サービスを使用する必要があるという圧力から脱します.@RequestMapping("/member/detail/{id}")
public String detail(@PathVariable("id") Long id, Model model) {
Member member = memberDao.selectByEmail(id);
if (member == null) {
...
}
...
}
サービス層ではなく、コントローラ上でデータアクセス層のDAOを直接使用するのが開発者一人一人の好みです.
パッケージ構成
Webリクエストを処理する領域には、コントローラクラスに関連するクラスが含まれます.検証コマンドオブジェクト値のValidatorは、Webリクエスト処理領域にあってもよいし、観点から、Validatorを機能提供領域に位置決めしてもよい.Web領域のパケットは、その領域に一致するパケット名(web、memberなど)を使用します.
機能提供領域には、機能を提供するために必要なサービス、DAO、メンバーなどのモデルクラスが含まれます.機能提供領域は、サービス、dao、modelなどの詳細パッケージに分けることもできる.
Reference
この問題について([スプリング]スプリング5プログラミング入門-15章:簡易Webアプリケーションの構成), 我々は、より多くの情報をここで見つけました
https://velog.io/@injoon2019/스프링-스프링5-프로그래밍-입문-15-장-간단한-웹-어플리케이션의-구조
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
public class MemberService {
...
public Member getMember(Long id) {
return memberDao.selectById(id);
}
}
@RequestMapping("/member/detail/{id}")
public String detail(@PathVariable("id") Long id, Model model) {
Member member = memberDao.selectByEmail(id);
if (member == null) {
...
}
...
}
Webリクエストを処理する領域には、コントローラクラスに関連するクラスが含まれます.検証コマンドオブジェクト値のValidatorは、Webリクエスト処理領域にあってもよいし、観点から、Validatorを機能提供領域に位置決めしてもよい.Web領域のパケットは、その領域に一致するパケット名(web、memberなど)を使用します.
機能提供領域には、機能を提供するために必要なサービス、DAO、メンバーなどのモデルクラスが含まれます.機能提供領域は、サービス、dao、modelなどの詳細パッケージに分けることもできる.
Reference
この問題について([スプリング]スプリング5プログラミング入門-15章:簡易Webアプリケーションの構成), 我々は、より多くの情報をここで見つけました https://velog.io/@injoon2019/스프링-스프링5-프로그래밍-입문-15-장-간단한-웹-어플리케이션의-구조テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol