SpringでBeanFactoryとApplication Contectの違い

2550 ワード

1.二つの大体の背景はBenFactory: BenFactoryはspringの中で原始的で、比較的古いFactoryです.古いので、BeanFactoryはspringプラグインをサポートできません.例えば、AOP、Webアプリケーションなどの機能があります.
Apple Contect Application ContectはBenFactoryのサブクラスです.古いBeanFactoryは更新されているspringの需要を満足できないので、Application Contextは基本的にBenFactoryの代わりに、よりフレームに向かった働き方と、上から下へ層化して継承します.この基礎の上で機能を拡張します.<1>Message Sourceは、国際化されたメッセージアクセス<2>リソースアクセス(URLやファイルなど)<3>イベント転送<4>Benの自動組立<5>様々なアプリケーション層のContectを提供します.
2.BenFactoryを利用してbeanを取得する
//XmlBeanFactory    BeanFactory。
 BeanFactory factory = new XmlBeanFactory("XXX.xml");
 //      mdzz bean。          。
 factory.getBean("mdzz");
ポイント:BenFactoryを使ってBeanを取得する場合、私たちはこの容器を実用化しただけで、その容器の中のbeanは実用化されていません.私たちがgetBeanをする時こそ、このbeanオブジェクトをリアルタイムで実行することができます.
3.Application Contectを利用してbeanを取得する
//      XXX.xml   ,       bean      。( bean scope singleton)
ApplicationContext appContext = new ClassPathXmlApplicationContext("XXX.xml");
ポイント:Application Contectを使ってbeanを取得する時、XX.xmlをロードする時、すべての配置beanを作成します.
4.Application Contectオブジェクトの参照を3つ取得する方法
/       ,    classpath      。
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//       ,            。
ApplicationContext applicationContext = new FileSystemXmlApplicationContext("applicationContext.xml");
//       ,XmlWebApplicationContext, web     。

//       ,         。  :
HelloService helloService = (HelloService) applicationContext.getBean("userService");
//    getBean            ,     id,    。
5.区別総括<1>Application Contectを使用すると、配置されたbeanがsingletonであれば、あなたがあるかどうかや使いたくないかに関わらず、それは全部実用化されます.利点は事前にロードすることができます.悪いところはメモリを無駄にすることです.2>BenFactoryは、BenFactoryを使用して実用化される場合には、配置されたbeanはすぐに実用化されず、そのbeanを使用するときにのみ実装される.利点はメモリを節約することです.悪いところはスピードが遅いです.モバイル機器の開発に多く使われています.3>特別な要求がない場合は、Application Contectを使って完成するべきです.BeanFactoryができることで、Appplication Conteextが完成し、現在の開発に近い機能を提供します.