[解決済み] Springのアノテーション@Controllerは@Serviceと同じですか?
質問
Springアノテーションは
@Controller
と同じです。
@Service
?
私は
@Controller
に使用することができます。
URL
をマッピングし、ビジネスロジックを呼び出すことができます。
一方
@Service
は、ビジネスロジックを含むサービスクラスのアノテーションに使用します。
を使用することができます。
@Controller
の代わりに
@Service
を使ってServiceクラスにアノテーションを付けることができますか?
どのように解決するのですか?
いいえ、それぞれかなり異なっています。
どちらも、異なる特殊化された コンポーネント アノテーションの異なる特殊化(実際には同じインターフェースの異なる2つの実装)なので、両方ともクラスパススキャンによって検出できます(XMLコンフィギュレーションで宣言した場合)
サービス アノテーションはサービスレイヤーで使用され、サービスタスクを実行するクラスにアノテーションを付けます。多くの場合、このアノテーションは使用しませんが、多くの場合、ベストプラクティスを表すためにこのアノテーションを使用します。例えば、データベースにオブジェクトを永続化するためにDAOクラスを直接呼び出すことができますが、これは恐ろしいことです。DAOを呼び出すサービスクラスを呼び出すのはかなり良いことです。これはSeparation of Concernsパターンを実行するには良いことです。
@Controller アノテーションはSpring MVCフレームワーク(Webアプリケーションを実装するためのSpring Frameworkのコンポーネント)で使用されるアノテーションです。Controllerアノテーションは、特定のクラスがコントローラの役割を果たすことを示します。Controllerアノテーションは、アノテーションされたクラスのステレオタイプとして機能し、その役割を示します。ディスパッチャは、このようなアノテーションのついたクラスをスキャンしてマッピングされたメソッドを探し、 @RequestMapping アノテーションを検出します。
Spring MVCのアーキテクチャを見ると、フロントコントローラを表すDispatcherServletクラス(XMLの設定で宣言します)があり、すべてのHTTPリクエストを適切なコントローラクラス(@Controllerでアノテーションされています)に向けてディスパッチしています。このクラスは、そのメソッドによってビジネスロジックを実行します(そして、サービスを呼び出すことができます)。これらのクラス (またはそのメソッド) は、一般的に リクエストマッピング アノテーションを使用します。これは、コントローラとそのメソッドで処理する HTTP リクエストを指定するものです。
例えば
@Controller
@RequestMapping("/appointments")
public class AppointmentsController {
private final AppointmentBook appointmentBook;
@Autowired
public AppointmentsController(AppointmentBook appointmentBook) {
this.appointmentBook = appointmentBook;
}
@RequestMapping(method = RequestMethod.GET)
public Map<String, Appointment> get() {
return appointmentBook.getAppointmentsForToday();
}
このクラスはコントローラです。
このクラスは "/appointments" "folder" への全てのHTTPリクエストを処理し、特に get メソッドは "/appointments" フォルダへの全ての GET HTTP リクエストを処理するために呼び出されるメソッドとなります。
これで、より明確になったかと思います。
関連
-
[解決済み] Spring の @Autowired フィールドが NULL になっているのはなぜですか?
-
[解決済み] AngularJS 。非同期データでサービスを初期化する
-
[解決済み] ASP.NET MVCコントローラは、Imageを返すことができますか?
-
[解決済み] springの@Controllerアノテーションと@RestControllerアノテーションの違いについて
-
[解決済み] Springの@Autowiredの使い方を理解する
-
[解決済み】Spring経由のRESTful認証
-
[解決済み】@Resourceと@Autowiredの比較
-
[解決済み] Spring Boot RESTサービスの例外処理
-
[解決済み] 複数のBeanが見つかった場合、Springはどのように名前による自動配線を行うのですか?
-
[解決済み] Spring: 静的フィールドに値を注入するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Spring Dataです。"delete by "はサポートされていますか?
-
[解決済み] Spring DAOとSpring ORMとSpring JDBCの比較
-
[解決済み] Spring RestTemplateでSSL証明書検証を無効にする
-
[解決済み] Spring CORS 'Access-Control-Allow-Origin' ヘッダが存在しない。
-
[解決済み] RestTemplateを使ったヘッダ付きHTTP get
-
[解決済み] Spring MVC @RestControllerとリダイレクト
-
[解決済み] クオーツ 決して実行されないCron式
-
[解決済み] SpringでSession Objectを取得するには?
-
[解決済み] javax.servlet.ServletException は spring web app のタイプに解決できない [duplicate] 。
-
[解決済み] Transactionalはどこに置くべきか Service Layer or DAO