web-dev-qa-db-ja.com

Spring MVCとSpring Bootの違い

私は春を勉強し始めたばかりです。次のステップでは、もっと大きなWebアプリケーションを開発したいと思います。今、私は私がSpring BootとSpring MVCのどちらから始めるべきか疑問に思います。私はすでにいくつかのことを読みましたが、どちらもちょっとよく似ているのでちょっと紛らわしいです。それで、それら2つの違いは何ですか?

146
Gero
  • Spring MVCは、Spring Frameworkによって管理され、サーブレットに基づいた完全なHTTP指向のMVCフレームワークです。それはJavaEEスタックのJSFと同等です。その中で最も人気のある要素は、@Controllerでアノテーションが付けられたクラスです。そこでは、あなたは異なるHTTPリクエストを使ってアクセスできるメソッドを実装します。 RESTベースのAPIを実装するための同等の@RestControllerがあります。
  • Spring bootはアプリケーションを素早くセットアップするためのユーティリティで、Springを使ったアプリケーションを構築するためにすぐに使える設定を提供します。ご存じのとおり、Springは その傘の に、spring-coreのようにさまざまなモジュールを統合しています。 )spring-dataspring-web(ところで、Spring MVCを含みます)など。このツールを使用すると、Springにいくつ使用するかを指定することができ、それらの設定をすばやく行うことができます(後で自分で変更することができます)。

つまり、Spring MVCはWebアプリケーションで使用されるフレームワークであり、Spring bootはSpringベースのプロダクション対応プロジェクト初期化プログラムです。 SOの Spring MVCタグwikiSpring Bootタグwiki にアクセスすると便利です。

217
Xtreme Biker

Spring MVCSpring Bootは他の回答でよく説明されているので、それを繰り返さずに、私は詳細にまっすぐジャンプしましょう。 Spring BootSpring MVCは、比較可能ではないか、または相互に排他的です。 Springを使ってWebアプリケーション開発をしたい場合は、とにかくSpring MVCを使用します。あなたの質問は、それからSpring Bootを使うべきかどうかになります。

一般的なSpringアプリケーションの開発やSpringの習得には、Spring Bootを使用することをお勧めします。それは仕事をかなり容易にし、生産準備ができてそして急速に広く採用されています。

STS(Spring Tool Suite)には2つのウィザードがあります。1つはSpring Bootプロジェクトを作成するためのもので、もう1つはSpring MVCプロジェクトを作成するためのものです。だから、私のお勧めは、Spring Bootプロジェクトを作成し、その中のモジュールとしてWebを選択することです。

81
Sanjay

Spring MVCは、Spring Frameworkのサブプロジェクトで、MVC(Model-View-Controller)パターンを使用するアプリケーションの設計と開発を目的としています。 Spring MVCは、Spring Frameworkおよび他のほとんどのサブプロジェクトと完全に完全に統合するように設計されています。

Spring BootはSpring Engineeringチームによる この記事 から非常によく理解できます。それはおそらく説得力がある、すなわちそれは急速な発展のあるスタイルを強く主張しています、しかしあなたがそうするならば、それは規則への例外を受け入れるのに十分によく設計されています。要するに、それは保証されたときに規約を破る必要があることを理解しても構わないと思っている構成方法論上の規約です。

8
Web User

SpringBootは、実際にはその縮小されたボイラー構成を事前に構成しており、アプリケーションを起動するための最も簡単または迅速な方法を提供します。

SpringBootは、Springではなく開発者から自分自身への設定の頭痛の種を取ります。

暗黙のうちにSpringBootはbean、controller、services、jpaなどのようなSpringフレームワークの概念に基づいています.

SpringBootはSpringのラッパーであると言えます。

SpringBootではデフォルトでServerのポートは8080ですが、変更したい場合はapplication.propertiesに移動して次のように書きます。

server.port = 8084

SpringとSpring Bootを区別する主なポイントは次のとおりです。

春:

  1. 主な違いは「テスト能力」です。
  2. 春にはDIとIOCが付属しています。システムによって行われるすべてのハードワークを通して、私たちはいかなる種類の仕事もする必要はありません(通常は手動でクラスのオブジェクトを定義しますが、Diを通して@Serviceまたは@Componentでアノテーションを付けるだけです)。
  3. @Autowiredアノテーションを通じて、単体テスト時に簡単にmock()します。
  4. 複製と配管のコードJDBCでは、SpringがHibernateとORMを介してその問題を解決するために、同じコードを複数回書いています。
  5. 他のフレームワークとの良好な統合Hibernate、ORM、Junit&Mockitoのように。

Spring Boot:

  1. クイックアプリケーションを作成して、1つの大きなWebアプリケーションを管理する代わりに、独自の範囲と機能を持つさまざまなマイクロサービスにそれらを個別に分割します。
  2. Web Jarを使用した自動設定:通常のSpringには、DispatcherServlet、コンポーネントスキャン、View Resolver、Web Jar、XMLなどの設定がたくさんあります。 (たとえば、データソース、Entity Manager Transaction Manager Factoryを構成したい場合)。クラスパスを使用できない場合は自動的に設定します。
  3. デフォルトのSpring設定依存関係(Spring Core、Web-MVC、Jackson、Tomcat、検証、データバインディング、ロギングなど)が付属しているDefault Spring Starterが付属しています。バージョン管理の問題も心配しないでください。

注:それはすべてのポイントを含んでいません。

5
Dhwanil Patel
  • スプリングブートを使用すると、構成を構築する必要はありません。これはプロジェクトを作成するときに自動的に行われます。

  • Spring MVCを使用している場合は、自分で設定を構築する必要があります。もっと複雑ですが、非常に重要です。

3
Leanghak

これまでの答えで同じことを繰り返さずに、私は新しいプロジェクトを始めようと思っていて、どれが一番良いフレームワークなのかわからない人のためにこの答えを書いています。あなたがこのフレームワークの初心者であれば、私が好む最も良いことはUsespring boot(with STS /Spring Toolです。スイート)。それは大いに役立ちますので。それはすべて独自の設定を行います。さらに、あなたのデータベースを構築するためにspringと共にHibernateを使用してください。それならあなたのアプリケーションは現在最高です。保証できます。

これは現在のJEEにとって最良のフレームワークの1つですが、将来に向けて開発される予定です。軽量の代替品が登場しています。だからあなたの経験で最新の状態に保つことは1つの特定のフレームワークに固執しないでください。最良のことはフレームワークではなく概念に流暢であることです。

3

Spring MVCは、Spring Frameworkでのモデルビューコントローラー(MVC)ベースのWebフレームワークです。これは、サーブレットAPI上に構築された元のWebフレームワークです。 Webアプリケーションを構築するためのすぐに使用できる機能をいくつか提供します。

  • 役割の明確な分離。各役割(コントローラー、バリデーター、コマンドオブジェクト、フォームオブジェクト、モデルオブジェクト、DispatcherServlet、ハンドラーマッピング、ビューリゾルバーなど)は、特殊なオブジェクトによって実現できます。
  • フレームワークとアプリケーションクラスの両方をJavaBeansとして強力かつ簡単に構成します。
  • カスタマイズ可能なバインディングと検証。

  • カスタマイズ可能なハンドラーマッピングとビューの解決。

  • 強力なテーマとローカル解像度機能。

Spring Bootは、Springを使用したアプリケーションを構築するためのデフォルト構成を提供することにより、アプリケーションを迅速にセットアップするための強力なユーティリティです。 Spring Bootの機能リストは次のとおりです。

  • マイクロサービスプラットフォームを使用するのに最適なものの1つ。

  • プロジェクトの起動および構成段階を大幅に削減する、インテリジェントで慣例的な構成アプローチの使用。

  • Application.propertiesまたはymlファイルを使用した強力で柔軟な構成管理。

  • 自動構成モジュール。

  • Spring Bootスターターは、アプリケーションにすぐに使用できる自動構成を提供します。

  • 量産可能なアクチュエータモジュール。

  • 意見を述べることで、Springの依存関係を簡素化します。

1

簡単に言えば、次のように表現できます。

Spring boot = Spring MVC + Auto Configuration(Don't have to write spring.xml flie for configurations) + Server(You can have Tomcat, Netty, Jetty server).

そして、Spring Bootは意見のあるフレームワークなので、その開発は迅速な開発、設定のためのより少ない時間の必要性、そして非常に良いコミュニティサポートを考慮しています。

0
Bishal Jaiswal