スプリングは、コントロール(IOC)と接線指向(AOP)コンテナフレームワークの軽量の反転です。プログラムで春構成の豆を取得する方法は?
Bean Factory(com.springframework.beans.factory.beanfactory)は、スプリングフレームワークのコアインターフェイスです。高度なIOC構成メカニズムを提供します。 BeanFactoryにより、さまざまな種類のJavaオブジェクトを管理できます。アプリケーションコンテキスト(com.springframework.context.applicationContext)は、BeanFactoryに基づいており、よりアプリケーション指向の関数を提供します。国際的なサポートおよびフレームワークイベントシステムを提供し、実用的なアプリケーションの作成を容易にします。通常、BeanFactoryをIOCコンテナと呼び、ApplicationContextをアプリケーションコンテキストと呼びます。しかし、便利さを書くために、ApplicationContextスプリングコンテナも呼び出します。
この2つの目的のために、私たちはそれらを単純に分割することができます。BeanFactoryは、Spring自体を対象としたSpring Frameworkのインフラストラクチャです。 ApplicationContextは、Springフレームワークを使用する開発者向けです。ほとんどすべてのアプリケーションの機会において、基礎となるBeanFactoryの代わりにApplicationContextを直接使用します。
ApplicationContextとBeanFactoryの初期化には大きな違いがあります。BeanFactoryがコンテナを初期化する場合、ターゲットBeanが初めてアクセスするまでBeanをインスタンス化しません。一方、アプリケーションコンテキストを初期化するときに、ApplicationContextがすべての単一インスタンスビーンをインスタンス化します。したがって、ApplicationContextの初期化時間はBeanFactoryのそれよりわずかに長くなります
この記事では、@Resourceと@Autowiredを介した自動注入は含まれず、ApplicationContextを介してSpring構成ファイルの豆のみを取得します。
XMLでBeanを構成するには、最も重要なことはorg.springframework.context.applicationcontextを取得することです。
ApproachContextを取得する最初の方法:
org.springframework.context.applicationcontext; Import org.springframework.context.support.filessystemxmlapplicationcontext; applicationContext applicationContext = new FilesxmlapplicationContext( "ApproachContext.xml");
または
org.springframework.context.applicationcontext; Import org.springframework.context.support.classpathxmlapplicationContext; private applicationContextContext = new ClassPathXMLApplicationContext( "ApproachContext.xml");
この方法でのApplicationContextをインスタンス化するのは非常に時間がかかります。この方法は、Springフレームワークを使用したスタンドアロンアプリケーションに適しています。プログラムが構成ファイルを介してスプリングを手動で初期化する必要がある場合にのみ使用することをお勧めします。 ApplicationContextの主な実装クラスは、ClassPathXMLApplicationContextとFilesystemXMLApplicationContextです。前のClassPathの構成ファイルをデフォルトでロードし、後者はデフォルトでファイルシステムから構成ファイルをロードします。
例:
public class beanmanager {private static applicationcontext context = new classpathxmlapplicationContext( "appcontext.xml"); public static object getBean(string beanid){return context.getbean(beanid);}}}}web.xmlでサーブレットを書き、自動的に起動し、initメソッドでbeanmanagerに電話してください
init()throws servletexception {beanmanager bm = new beanmanager(); //オプションであるため、Webアプリケーションが開始されたときにSpringがBean構成をロードします。 //それ以外の場合、BeanManagerが初めて呼び出されたときにロードされ、速度に1回影響します。 }beanmanager.getbean(string beanid)を使用します。 Javaコードで、Beanインスタンスを取得します。
ApplicationContextを取得する2番目の方法:Springが提供するツールクラスを介してApplicationContextオブジェクトを取得します。これは、Webプロジェクト向けに特別にカスタマイズされた方法です。 Webプロジェクトで使用することをお勧めします。例えば:
servletcontext servletcontext = request.getSession()。getServletContext(); applicationContext ac1 = webapplicationcontextutils .getRequeredwebapplicationContext(servletcontext(servletcontext)applicatedcontext ac2 = webapplicationcontextutils .getweblicationcontext(servetcontext(servetcontext) sc)ac1.getbean( "beanid"); ac2.getbean( "beanid");
javax.servlet.servletContextを介してApplicationContextインスタンスオブジェクトを取得します。これは、要求、セッションなどを使用する必要があります。
このようにして、ApplicationContextオブジェクトをメンバー変数として設定することはできません。特定の各方法で、リクエスト、セッションなどを通じてサーブレットコンテキストを取得し、ApplicationContextインスタンスを取得する必要があります。
したがって、この方法は、ServletContextオブジェクトを取得できる場合のみ推奨され、ApplicationContextオブジェクトをメンバー変数として定義する必要はありません。
注:WebApplicationContextutilsを使用してApplicationContextインスタンスを取得する場合、org.springframework.web.context.contextloaderlistenerリスナーをWeb.xml構成ファイルに追加する必要があります。
構成ファイル:web.xml
<! - contextloaderlistenerはApplicationContextを自動的に挿入し、 - > <! - スプリング構成ファイルの読み込み場所 - > <Context-Param> <Param-Name> ContextConfiglocation </parを取得しますam-name> <param-value> /web-inf/spring/appcontext.xml,/web-inf/spring/appinterceptor.xml </param-value> </context-param> <リスナー> <リスナー> org.springframework.web.web.web.context.contextloadexener </sirthener </</suser>
3。抽象クラスApplicationObjectSupportから継承
Abstract class ApplicationObjectSupportは、getApplicationContext()メソッドを提供します。これにより、ApplicationContextを簡単に取得できます。 Springが初期化されると、ApplicationContextオブジェクトは、抽象クラスのSetApplicationContext(ApplicationContextコンテキスト)メソッドを介して注入されます。
4。抽象クラスWebApplicationObjectSupportから継承されました
getWebApplicationContext()を使用してorg.springframework.web.context.webapplicationcontextを取得します。Webアプリケーションには通常のアプリケーションよりも多くの機能があるため、WebApplicationContextはApplicationContextを拡張します。 webApplicationContext定数root_web_application_ context_attributeを定義します。コンテキストが開始されると、WebApplicationContextインスタンスは、このキーを使用してServletContextの属性リストに配置されます。したがって、次のステートメントからWebコンテナからWebApplicationContextを直接取得できます。
WebApplicationContext wac =(webApplicationContext)servletcontext.getTribute(webApplicationContext.Root_Web_Application_context_attribute);
5.インターフェイスApplicationContextAwareを実装します
このインターフェイスのSetApplicationContext(ApplicationContext Context)メソッドを実装し、ApplicationContextオブジェクトを保存します。 Springが初期化されると、ApplicationContextオブジェクトがこのメソッドを介して注入されます。
3番目、4番目、および5番目の方法では、すべてスプリング構成ファイルでクラスを構成する必要があります。
<! - ApplicationContextToolは、3番目、4番目、5番目の方法を継承または実装する特定の実装クラスであると仮定します - > <bean> </bean>
それ以外の場合、ApplicationContextは取得せず、NULLが返されます。
上記のコンテンツでは、JavaのSpring Beanメソッドの概要を紹介します。気に入っていただければ幸いです。