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を取得する
3.Application Contectを利用してbeanを取得する
4.Application Contectオブジェクトの参照を3つ取得する方法
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が完成し、現在の開発に近い機能を提供します.