2012-03-15 16 views
0

私はPro Spring 2.5を読んでおり、簡単なBeanファクトリを作る2章の質問があります。彼らは "bean registery"について話します、これはプロパティファイルから読み込んだリストを保持する "Map"です(私が想定している形式であれば何でも構いません)?BeanFactoryの実装

これが正しいのであればたBeanFactoryは、基本的にこのん:

  • は、Beanファクトリを作成し、
  • 設定ファイルを読み込むregistery(地図、どんなオブジェクトのリスト)にコンフィギュレーションファイルの内容を入れて
  • クライアントはBean名でgetBeanメソッドを呼び出し、ファクトリはそれを見つけてインスタンス化するためにregisteryを使用します。

これは間違いありませんか?

BeanRegisteryをインタフェースに抽出し、BeanFactoryでこのインタフェースを実装する方法について説明しますが、原則は同じですか?それは良いコーディング目的のためだけに行われますか?

答えて

2

あなたはBeanDefinitionRegistryを参照していると思います。 BeanDefinitionオブジェクト(つまり、xmlを使用していると仮定して、xmlファイルに入れたもの)を追跡する方法として機能します。

実装では、インスタンス化を行う必要はありません。これはBeanFactoryの実装に委ねられています。通常、これは物事が起こるの方法です:

  1. たBeanFactoryは通常BeanDefinitionReader
  2. BeanDefinitionReaderが、その後Bean定義(通常はXMLから)を取得し、登録BeanDefinitionRegistry
  3. たBeanFactoryがBeanDefinitionためBeanDefinitionRegistryを聞いてきます、となります構築しますそれをインスタンス化する。

は実際には、たBeanFactoryとBeanDefinitionRegistryは同じクラスであり、BeanFactoryImplementationは、適切なBeanDefinitionReaderをインスタンス化します。

org.springframework.context.support.ClassPathXmlApplicationContextを取ると、BeanDefinitionRegistryとBeanFactoryの両方が実装され、内部的にXmlBeanDefinitionReaderが構築され、コンポーネント間の相互作用が制御されます。

0

いいえ、あなたはそうする必要はありません。あなたが思っているよりずっと簡単です。

ちょうどApplicationContextを取得し、あなたは行こうとしています。 configを読み込み、豆を作成して配線し、名前で利用可能にします。

ClassPathXmlApplicationContextは、Webアプリケーションを作成していない場合は具体的な実装に適しています。クラスパスのディレクトリからすべての設定をそのように読み込むことができます。

+0

はい、はい...しかし、これはその本の "Hello、World"の例です。それは実際にこれをやっているあなたの苦労のステップを必要とする – LuckyLuke