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を拡張して、より多くの追加機能を提供しています.この二つの容器を実用化する時には違いがあります.
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より少し長いです.