2
1. BeanFactory fac=new ClassPathXmlApplicationContext("Spring-Config.xml"); 

2. Resource res=new Classpathresource("Spring-Config.xml");
    BeanFactory fac=new XmlBeanFactory(res);

(私は2番目のタイプのみを見つけました私は使用するための親構成ファイルを指定できます

3. ApplicationContext context = new ClassPathXmlApplicationContext("Spring-Config.xml");

beanfactoryをロードする方法は3つありますが、それらの違いを知りたいです。可能であれば、これらすべてのメソッドで親構成ファイルを定義するにはどうすればよいですか?

4

3 に答える 3

2

ApplicationContextはBeanFactoryインターフェースから派生しているため、BeanFactoryが持つすべての関数と追加の関数があります。以下の部分は、Springの公式Webサイト MessageSourceにあり、i18nスタイルのメッセージへのアクセスを提供します。URLやファイルなどのリソースへのアクセス。ApplicationListenerインターフェースを実装するBeanへのイベント伝播。複数の(階層的な)コンテキストをロードし、それぞれを1つの特定のレイヤー(アプリケーションのWebレイヤーなど)に集中させることができます。

一部のコードはBeanFactoryを使用し、一部はApplicationContextを使用すると言ったように、実際にはそれ以上の違いはありませんが、1つは、ApplicationContextの追加機能のために、より重くなり、transactionとaopで動作できるため、非常に優れています。 Tomcatなどのコンテナ環境で使用されます。あなたはここでもっと見つけることができます、特に秒3.8.1。BeanFactoryまたはApplicationContext?http ://static.springsource.org/spring/docs/2.5.x/reference/beans.html#context-introduction-ctx-vs-beanfactory

于 2013-03-13T05:25:39.673 に答える
1

BeanFactory 階層は、こちらの画像に示されています。

これらはインターフェースであり、インターフェースは多数の実装を持つことができるため、対応するさまざまな方法で Bean を取得できることに注意してください。

そして、ここにBeanFactory と ApplicationContextの違いのリストがあります

于 2013-03-13T05:37:31.140 に答える
0

BeanFactoryApplicationContextはどちらも、Spring IOCコンテナーから Bean を取得する方法ですが、それでもいくつかの違いがあります。

BeanFactoryは、多数の Bean をインスタンス化、構成、および管理する実際のコンテナーです。これらの Bean は通常、相互に連携するため、相互に依存関係があります。これらの依存関係は、BeanFactory によって使用される構成データに反映されます。

BeanFactoryApplicationContextはどちらも Java インターフェースであり、ApplicationContext は BeanFactory を拡張します。どちらも XML 構成ファイルを使用した構成です。つまり、BeanFactory は基本的な制御の反転 ( IoC ) と依存性注入 ( DI ) 機能を提供し、ApplicationContext は高度な機能を提供します。

BeanFactory は、インターフェース「 org.springframework.beans.factory 」Where BeanFactoryによって表され、複数の実装があります。

ClassPathResource resource= new ClassPathResource("appConfig.xml");
XmlBeanFactory factory = new XmlBeanFactory(resource);

違い

  1. BeanFactoryはgetBean()メソッドを呼び出すと Bean をインスタンス化し、 ApplicationContext はコンテナーの起動時にシングルトン Bean をインスタンス化します。 getBean() が呼び出されるのを待ちません。

  2. BeanFactoryは国際化をサポートしていませんが、ApplicationContextは国際化をサポートしています。

  3. BeanFactoryApplicationContextのもう 1 つの違いは、リスナーとして登録されている Bean にイベントを発行できることです。

  4. BeanFactoryインターフェースの一般的な実装の1 つはXMLBeanFactoryであり、 ApplicationContextインターフェースの一般的な実装の 1 つはClassPathXmlApplicationContextです。

  5. 自動配線を使用してBeanFactoryを使用している場合は、 ApplicationContextを使用している場合に XML で構成できる API を使用して AutoWiredBeanPostProcessorを登録する必要があります。要約すると、 BeanFactoryはテストおよび非本番使用には問題ありませんが、ApplicationContextはより機能豊富なコンテナー実装であり、BeanFactoryよりも優先する必要があります

  6. BeanFactoryはデフォルトで遅延読み込みをサポートApplicationContextはデフォルトで積極的な読み込みをサポートします。

于 2016-01-15T05:28:21.817 に答える