2016-04-04 11 views
0

私はしばらくの間、Spring MVCで作業してきましたし、プレーンなSpring(Spring Bootかもしれない)でアプリケーションを作成することを考えています。 - 人 - アドレス しかし、最初のアプリケーションバージョンはAddressクラスなしで構築されます。私はどのフィールドがAddressクラスに格納されるのかわかりません。また、私はHibernateでアプリケーションを作っています(HibernateはインスタンスクラスのDBテーブルを作成します)。だから私はオプションがあります: - 最初に、アドレスフィールドなしでPersonクラスを作成しますが、これは不完全であり、Addressがシステム内にあるときにテストを更新する必要があります。 - アドレスインターフェイスを作成し、MockAddressまたはStubAddressのような実装をいくつか行い、アドレスインターフェイスタイプのPerson Classでデータフィールドを作成します。 - インターフェイスとフィールド/メソッドを使用せずにAddressクラスを作成し、人と配線します。ドメインモデルでSpring依存性注入を使用しますか?

私はこのトピックのための良い説明を見つけることができません、どのようにそこでDIを使用するか、それを使用する価値がありますか?ほとんどの記事はサービスレイヤーのワイヤーについては見つかりましたが、データモデルオブジェクトについては見つかりませんでした。

+0

質問の説明を簡単にすることを検討してください。質問の内容のみが含まれています。 –

+0

実際には、私は何を簡素化することができないのか分かりません。ありがとう。 – Pavlo

答えて

-1

ドメインモデルに依存性注入(DI)の力はありません。たとえば、人から人へのドメインモデルの関係でDIから利益を得られない可能性があります。パーシステンスデータモデル、つまりデータベース+ Hibernateは、ドメインモデルの関係を維持する必要があります。

しかし、アプリケーション構成を管理することは、DIを使用して実稼働環境のアプリケーションを組み立てるのに最適な場所です。サービスレイヤーを設定することは、DIを使用するもう1つの優れた点です。依存性注入を使用することは、説明したような最も基本的なSpringアプリケーションであっても、学ぶ時間と努力の価値があります。

here's a simple example using Spring Data JPA with Hibernate.ドメインモデルの変更に合わせてデータベースをアップグレードするには、Flywayを使用してください。

+0

こんにちは。あなたが与えた最初のリンクを確認しましたが、ドメインデータオブジェクトに依存性注入はありません。この例は素晴らしいですが、私の質問には答えません。私は何かが恋しいですか?フライウェイは私のために絶対に新しいですが、私は明日にそれをチェックします... – Pavlo

+0

@Pavlo - この例では、依存関係の注入を使用していますが、アプリケーション内の '@ Bean'を除いて、フレームワーク内に隠されています... –

+0

はいそれは、CustomerRepositoryをCommandLineRunnerオブジェクトに注入します。しかし、私の質問では、あるデータオブジェクトから他のデータオブジェクトへの注入について質問しました。あなたの例では、顧客が他のいくつかのデータモデルオブジェクト(Addressのようなもの)に接続されているとします。そして、問題は:私はいつもそれらをきちんと結びつけるべきか(アドレスと顧客)、またはここでもDIを使うことができるか?データオブジェクトをサービスに注入するだけでなく(CommandLineRunner Beanなど) – Pavlo