java面接問題:springの中のBeanFactoryとApplication Conteetの役割と違い?
5001 ワード
作用:
1.BenFactoryはbeanの配置文書を読み、beanのロードを管理し、実用化し、bean間の依存関係を維持し、beanの声明周期を担当する.
2.Application Contectは上記BeanFactoryで提供できる機能以外に、より完全なフレーム機能を提供しています.
a.国際化支援 b.リソースアクセス:Resource rs=ctx.getsResource(「classity:config.properties」)、「file:c:/config.properties」 c.イベント転送:Application ContactextAwareインターフェースを実現することにより
3.よく使うApple Contectの取得方法: FileSystemXmlAppliation Contect:【ファイルシステム】または【classipathのxmlプロファイル】から作成し、パラメータはプロファイル名またはファイル名配列です. Class PathXml Apple Comptext:【classipathのxmlプロファイル】から作成し、【jarパッケージ】から設定ファイルを読み込むことができます. ウェブアプリケーションのルートディレクトリからプロファイルを読み込むには、まずweb.xmlに配置する必要があります.モニターまたはservletを構成して実現できます.
org.springframe ework.web.co.ntenxt.context LoaderListener
context org.spring frame ework.web.co.ntenxt.context Loader Servlet 1
いずれもデフォルトのプロファイルはweb-inf/appication Contact.xmlであり、context-paramで設定ファイルを指定するcontext-ConfigLocation/WEB-INF/myApple Contect.xt.xmlを使用することもできます.
SpringのIoC容器はBenFactoryインターフェースを実現した実用的なクラスです.
事実上、 Springは2つの異なる容器を提供しています.一つは最も基本的なBeanFactoryで、もう一つは拡張されたApplication Contectです.
BenFactoryは基本的な注入支援のみを提供していますが、ApplectoryはBenFactoryを拡張して、より多くの追加機能を提供しています.この二つの容器を実用化する時には違いがあります.
BenFactoryは、初期化容器において、Beanを実装していません. 初めて訪問するまで あるビーンの時だけターゲットを例示します.
Application Comptextは アプリケーションのコンテキストを初期化 すべてのシングルインスタンスのBeanを実装します.
そのため、Apple Contectの初期化時間はBenFactoryより少し長いです.
1.BenFactoryはbeanの配置文書を読み、beanのロードを管理し、実用化し、bean間の依存関係を維持し、beanの声明周期を担当する.
2.Application Contectは上記BeanFactoryで提供できる機能以外に、より完全なフレーム機能を提供しています.
a.国際化支援 b.リソースアクセス:Resource rs=ctx.getsResource(「classity:config.properties」)、「file:c:/config.properties」 c.イベント転送:Application ContactextAwareインターフェースを実現することにより
3.よく使うApple Contectの取得方法: FileSystemXmlAppliation Contect:【ファイルシステム】または【classipathのxmlプロファイル】から作成し、パラメータはプロファイル名またはファイル名配列です. Class PathXml Apple Comptext:【classipathのxmlプロファイル】から作成し、【jarパッケージ】から設定ファイルを読み込むことができます. ウェブアプリケーションのルートディレクトリからプロファイルを読み込むには、まずweb.xmlに配置する必要があります.モニターまたはservletを構成して実現できます.
org.springframe ework.web.co.ntenxt.context LoaderListener
context org.spring frame ework.web.co.ntenxt.context Loader Servlet 1
いずれもデフォルトのプロファイルはweb-inf/appication Contact.xmlであり、context-paramで設定ファイルを指定するcontext-ConfigLocation/WEB-INF/myApple Contect.xt.xmlを使用することもできます.
SpringのIoC容器はBenFactoryインターフェースを実現した実用的なクラスです.
事実上、 Springは2つの異なる容器を提供しています.一つは最も基本的なBeanFactoryで、もう一つは拡張されたApplication Contectです.
BenFactoryは基本的な注入支援のみを提供していますが、ApplectoryはBenFactoryを拡張して、より多くの追加機能を提供しています.この二つの容器を実用化する時には違いがあります.
public class BeanFactoryTest {
public static void main(String[] args) throws Throwable{
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource res = resolver.getResource("classpath:com/baobaotao/beanfactory/beans.xml");
System.out.println(res.getURL());
BeanFactory bf = new XmlBeanFactory(res);
System.out.println("init BeanFactory.");
Car car = bf.getBean("car",Car.class);
System.out.println("car bean is ready for use!");
car.introduce();
}
}
public class XmlApplicationContextTest {
public static void main(String[] args) {
// , ClassPathXmlApplicationContext
ApplicationContext ctx = new ClassPathXmlApplicationContext("com/baobaotao/context/*.xml");
Car car1 = ctx.getBean("car",Car.class);
// , FileSystemXmlApplicationContext
// ctx = new FileSystemXmlApplicationContext("D:/com/baobaotao/context/*.xml");
// Car car2 = ctx.getBean("car",Car.class);
}
}
Apple Contectの初期化とBeanFactoryには大きな違いがあります.BenFactoryは、初期化容器において、Beanを実装していません. 初めて訪問するまで あるビーンの時だけターゲットを例示します.
Application Comptextは アプリケーションのコンテキストを初期化 すべてのシングルインスタンスのBeanを実装します.
そのため、Apple Contectの初期化時間はBenFactoryより少し長いです.