BeanFactoryとApplicationContextはどちらも、Spring IOCコンテナーから Bean を取得する方法ですが、それでもいくつかの違いがあります。
BeanFactoryは、多数の Bean をインスタンス化、構成、および管理する実際のコンテナーです。これらの Bean は通常、相互に連携するため、相互に依存関係があります。これらの依存関係は、BeanFactory によって使用される構成データに反映されます。
BeanFactoryとApplicationContextはどちらも 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);
違い
BeanFactoryはgetBean()メソッドを呼び出すと Bean をインスタンス化し、 ApplicationContext はコンテナーの起動時にシングルトン Bean をインスタンス化します。 getBean() が呼び出されるのを待ちません。
BeanFactoryは国際化をサポートしていませんが、ApplicationContextは国際化をサポートしています。
BeanFactoryとApplicationContextのもう 1 つの違いは、リスナーとして登録されている Bean にイベントを発行できることです。
BeanFactoryインターフェースの一般的な実装の1 つはXMLBeanFactoryであり、 ApplicationContextインターフェースの一般的な実装の 1 つはClassPathXmlApplicationContextです。
自動配線を使用してBeanFactoryを使用している場合は、 ApplicationContextを使用している場合に XML で構成できる API を使用して AutoWiredBeanPostProcessorを登録する必要があります。要約すると、 BeanFactoryはテストおよび非本番使用には問題ありませんが、ApplicationContextはより機能豊富なコンテナー実装であり、BeanFactoryよりも優先する必要があります
BeanFactoryはデフォルトで遅延読み込みをサポートし、ApplicationContextはデフォルトで積極的な読み込みをサポートします。