2016-09-23 11 views
2

2ヶ月間、私はMVCパターンに従ってWebアプリケーションを開発することに決めました。Spring MVC:Spring Beanはどのように機能しますか?

私は埋め込み(C/C++)のプログラムから来ていますので、私はJavaにステップバイステップで行きます。

これまで私はすべてのアプリケーション開発を手作業で行っていました。私はすべてのサーブレットをパッケージに、私のJavaBeanをパッケージに、私の(JPA)エンティティを別のパッケージに、DAOレイヤーを同じにしました。これまでのところとても良い、私は何をやっているのか分かり、すべてがうまくいきます。

「便宜のために私は開発と作業をより迅速に行うために、私はSpring MVC(このフレームワークをよく聞いています)を使用することに決めましたが、ここで私はSpring Beansの概念についていくつかの問題を抱えています。

ここに私の質問があります:

春の豆とは何ですか? (I have already read this but it's not tell me how using it?)(Beanはいくつかのルールを尊重するシンプルなJavaクラスでしたが、私がSpring Beanを見ると全く違うので、Beanがオブジェクトを返したSpringコードを見ました。なぜ彼らはBean "、私は混乱している)、そう。

SpringMVCのワークフローに関連するSpring Beansはどこにありますか?

アプリケーションではどこにSpring Beansを配置する必要がありますか?

いつ、どのように使用するのですか?

私のアプリケーションのビジネス部分でJavaBeansを使用しています。たとえば、フォームからフィールドを取得する場合、Spring Beansで同じことを行うことは可能ですか?

Spring Beanの設定が難しい(私は後ろのメカニズムを理解していないため)、Spring Beanを1つ使用せずにSpring MVCでWebアプリケーションを作成できますか(もちろんDispatcherServletは例外です)。

なぜJava BeanではなくSpringBeanを使用するのですか?

さらに何がSpring Beanですか?

私は、Spring MVCは処理が簡単ではないことを認識しています。多くのことを習得し、特に多くの設定があります。

どこから始めますか?

私はSpring MVCを使いますか?

ウェブを検索して理解していますが、詳細を説明するものは見つかりませんでした。

ありがとうございます。

PS:私の英語は申し訳ありませんが、フランスに住んでいます。

+2

この質問は非常に広いです。私は多くの人々がこれにすべて答えようとはしないのだろうかと思います。 –

答えて

2

LemmeまずSpring Frameworkの要点を説明してください。

スプリングは制御の反転(IoC)の概念に基づいています。このコンセプトは基本的に、機能的なBeanがインタフェースにおける依存関係を表現し、何か(この場合はSpring)が正しい実装を注入することを意味します。例えば

私はUserRepository(インターフェース)を有すると仮定する。お客様がこれらの2つのストレージテクノロジのいずれかを選択できるため、MySqlUserRepositoryMongoDbUserRepositoryの2つの実装があります。今私はUserRepositoryを消費する複数のクラスがあると仮定します。彼らは私たちがどのインプラントを使用しているか知る必要がないように、消費者はUserRepository(通常は@Injectアノテーションを介して)が必要であることを表明し、このフレームワークを利用して初期化時に正しいフレームワークを注入します。

これはSpring Frameworkの要点です。これらのオブジェクト(UserRepository implとconsumer)は、Spring管理Bean、またはより簡潔にSpring Beansです。 Springはライフサイクルを管理し、それらを結び付けます。

Spring MVCは、Spring Framework上に構築されたMVCフレームワークです。つまり、あなたのMVCアーチファクト(コントローラなど)はSpring Beansです。

春は一般的に、あなたの非ステートフルオブジェクトのすべてを管理する必要があります(そこにこれを行うにはない十分な理由があるかもしれないケースがあるが、それはこの答えの範囲を超えてあります)。ステートフルオブジェクトは、ステートフルでないオブジェクトが管理するオブジェクトです。 Springは、あなたの状態を管理するオブジェクトを管理します。

Springはアドオンがたくさんある非常に強力なフレームワークであり、Javaエコシステムのほとんどのパッケージは、最低限、Springと連携するためのチュートリアルを持っています。

+0

UserRepositoryの例をありがとう。私のプロジェクトを開始するには、私はこのコンセプトを認め、私はそれをJava Beanと比較しようとしません。 – akuma8

4

Java beanとspring-managed beansは異なるものです。 Java beanは、実際にはSpring Beanが異なる特定の命名規則を持つオブジェクトです。

(Springが管理する)Beanとは、ライフサイクルがSpringフレームワークによって管理されるクラスのインスタンスです。 Java Beanの命名規則などに従う必要はありません。Beanのもっとも単純な使用法は依存性注入です。このようなバネ・マネージド・オブジェクト(Bean)は、コントローラなどの他のBeanに注入できます。

Beanの作成方法はいくつかあります。 It's nicely described in the doc。春の観点からも、コントローラは、いくつかの余分な機能を持って起こるだけで、別のBeanです

注意。

私はいくつかのspring-bootサンプルアプリケーションを使い始めました。それはあなたに多くの設定を保存し、それは一般的に良い出発点です。

+0

あなたの説明のために多くのおかげで、もしあなたが何を意味しているのか分かっていれば、SpringのすべてがJavaの場合と同じ "SpringBean"であり、すべてが "Object"です。ですから、私はSpringBeanがJavaBeanと全く違うということを心に留めなければなりません。 – akuma8

0

この質問の答えを知りたい人の時間を節約するために、春の公式サイトにSpring Beanshigh-level view of how Spring worksという素晴らしい説明があります。リンクはバージョン4.3.9(当時の最新)を参照し、より多くの更新情報はhereを利用可能にする必要があります。

ドキュメントは言う:春、

春のIoCコンテナによって管理されているアプリケーションのバックボーンを形成するオブジェクトとは、豆と呼ばれています。 Beanは、Spring IoCコンテナによってインスタンス化され、アセンブルされ、その他の方法で管理されるオブジェクトです。それ以外の場合は、というBeanは、アプリケーション内の多くのオブジェクトの1つに過ぎません

...

次の図は、Springの動作の概要を示しています。enter image description here

+0

春との約7ヶ月のプレイの後、私はこの質問を投稿した日よりもはっきりしています。それがどのように機能するかを理解すると、それは素晴らしいツールです。次のリリースを待つ – akuma8

関連する問題