物事を保持するために使用される名前が示すようにSpringコンテナは、ロードが豆です。Springコンテナは、作成、構成、豆を管理する責任があります。たBeanFactoryと旧サブインターフェースでのApplicationContextインタフェース:スプリング容器は2つのコアインターフェイスを有しています。Java EEベースのプログラムの春に、全ての成分がのSessionFactory、トランザクション管理の休止、データ・ソース・オブジェクトを含む、豆として扱われ、すべてのJavaクラスプログラムは、ばねコンテナBeanとしてであってもよいです。
図1に示すように、スプリング収容
コアインタフェーススプリングコンテナがたBeanFactoryであり、それはサブインターフェースがApplicationContextのあるています。ApplicationContextの春は、コンテキストと呼ばれています。
発信者は、指定されたBeanへの参照を取得するためにgetBean()メソッドを使用する必要があります。ほとんどのJavaプログラムでは、より便利ばねとして簡単にApplicationContextの使用します。彼らの通常の実装クラスFileSystemXmlApplicationContext、ClassPathXmlApplicationContextとAnnotationConfigXmlApplicationContextを持っています。春に使用されるJava Webコンテナた場合、それは通常XmlWebApplicationContext、AnnotationConfigWebApplicationContext二つの容器です。
コンテナは春のインスタンスを作成すると、春はコンテナ管理のBeanの構成ファイルを提供しなければならない、つまり、私たちはしばしばspring.xmlプロファイルを言います。だから、パラメータとして渡されたプロファイルたBeanFactoryを作成するとき。XML設定ファイルは、一般的に渡されたリソースへの対象となっています。スプリングリソースは、インターフェースを介して関連付けられたリソースによって提供されるリソースアクセスインターフェース単純スプリング透明なディスクアクセス、およびネットワーク・システム・クラス・パスです。
スタンドアロンのJava EEアプリケーションでは、次の方法でたBeanFactoryをインスタンス化することができます。
現在のプロジェクトのクラスパスに//検索プロファイル
のApplicationContext AppContextをClassPathXmlApplicationContext新しい新=(「beans_7_3_3.xml」);
//ファイルシステムの検索プロファイル
AppContextを=新しいFileSystemXmlApplicationContext(「D: \\春・ツール・ワークスペース\\ myspring SRC \\ \\ beans_7_3_3.xml ");
//中国の豆を取得し、中国のタイプを返す
人が=中国appContext.getBean(")、」中国のChinese.class;
; chinese.useAxe()
のApplicationContextを使用して2を、
ほとんどの時間は、スプリング容器たBeanFactory例として使用されず、むしろバネApplicationContextの容器として、容器はまた、スプリングバネコンテキストとして知られています。ApplicationContextのたBeanFactory強化機能は、開発された多くの有用かつ便利な機能を提供します。
Webアプリケーションの起動時にウェブでcontextLoaderのサポートクラスとして利用することができる、のApplicationContextが自動的に作成しました。
外部たBeanFactoryによってサポートされるすべての機能を提供することに加えて、アプリケーションは、さらに、以下の機能を提供します。
①ApplicationContextのすべてのシングルトンビーン(シングルトン豆)を初期化するデフォルト設定されます、構成によってキャンセルすることができます。
②のApplicationContextは、このように国際的支持を提供する、messageSourceインタフェースを継承しました。
③そのようなファイルやURLなどのリソースへのアクセス。
④イベントメカニズム。
⑤複数のプロファイルをロード中に。
⑥開始され、春のコンテナ宣言的な方法を作成します。
たBeanFactory ApplicationContextのは、すべての機能が含まれ、かつ、優先利用のApplicationContextをいくつかの追加機能を提供します。唯一たBeanFactoryのメモリ消費量で使用するために。
システムは、ApplicationContextのコンテナを作成するとき、コンストラクタを呼び出す例を含むシングルトンビーンデフォルトの初期化は、従属オブジェクトを注入する方法を駆動するばね要素を設定呼び出すことによってビーンを作成します。これは、以前のApplicationContextの作成したシステムが多くのオーバーヘッドを持っていますが、買収が完了すると背後にあるBeanインスタンスを初期化すると、より優れた性能を有することを意味します。ばねApplicationContextのシングルトンビーン初期化コンテナーの使用を防止するために怠惰-INIT =要素に「true」属性を添加してもよいです。
3、国際ApplicationContextのサポート
のApplicationContextインタフェースは、国際的な機能と、MessageSourceインタフェースを拡張します。
提供//二つの方法の国際MessageSourceインターフェース
ストリングのgetMessage(文字コード、[オブジェクト ]引数、ロケールLOC)を{
}
文字列のgetMessage(文字コード、[]引数、文字列のデフォルトロケールLOC物体){
}
支持バネ国際は、実際には、Java(登録商標)国際化に基づいています。プログラムのメッセージの核となるアイデアは、唯一の国際応答キーを使用して国際的なリソースファイル、およびコード情報のニーズに書き込まれます。
図4は、イベントメカニズムApplicationContextの
ApplicationContextのイベント機構は、オブザーバの設計パターンです。ApplicationEventインターフェースとApplicationListener介して、前者が観察され、後者は、観察者です。
スプリング・イベント・フレームワークは、2つのコア・インタフェースを有する:
ApplicationEvent(イベント)のApplicationContextによって発行されなければなりません。
ApplicationListener(リスナー):このインタフェースは、コンテナリスナーBeanとしての役割を果たすことができます実装します。
実際には、バネ機構は、イベントによってイベント(ApplicationEventクラスインターフェースを達成するために)、イベントのソース(すなわち、ばね容器、図示Javaコードをトリガした)、リスナー(ApplicationListenerインターフェイスクラス)です。私たちは、ページ上のボタンをクリックするようなものです。ボタンは、ハンドラがリスナーで、このアクションは、スタンドアロンのイベントであり、イベントソースです。
次のコードは、ばねイベントメカニズムを示し
、インポートorg.springframework.context.ApplicationEvent
ApplicationEvent {延びEmailEventパブリッククラスを
プライベート文字列のアドレス。
プライベート文字列テキスト。
公共EmailEvent(オブジェクトソース){
スーパー(ソース)。
}
公共EmailEvent(オブジェクトソース、列アドレス、文字列テキスト){
スーパー(ソース)。
this.address =アドレス。
this.text =テキスト。
}
パブリック文字列のgetAddress(){
リターンアドレス。
}
公共ボイドsetAddress(列アドレス){
this.address =アドレス。
http://www.senta7.net/content/?729.html
パブリック文字列のgetText(www.yacuangyl.com){
テキストを返します。
}
公共ボイドのsetText(文字列テキスト){
this.text =テキスト。
}
}
輸入org.springframework.context.ApplicationContext;
輸入org.springframework.context.ApplicationEvent。
輸入org.springframework.context.ApplicationListener。
輸入org.springframework.context.support.ClassPathXmlApplicationContext;
パブリッククラスEmailNotifierはApplicationListener {実装
@Override
ます。public void onApplicationEvent(ApplicationEventイベント){
//处理電子メール事件
であれば(イベントのinstanceof www.xcdeyiju.com EmailEvent){
EmailEventメール=(EmailEvent)イベント。
System.out.println(email.getAddress()+」「+ email.getText());
}他{
//输出スプリング容器的内置事件
のSystem.out.println( "其它事件:" +イベント)。
}
}
パブリック静的無効メイン(文字列[] args){
のApplicationContextのApplicationContext =新しいClassPathXmlApplicationContext( "beans_7_4_4.xml")。
EmailEvent emailEvent = applicationContext.getBean( "emailEvent"、EmailEvent.class)。
applicationContext.publishEvent(emailEvent)。
}
}
<xmlのバージョン= "1.0"エンコード= "UTF-8"?>
<豆のxmlns = "http://www.jujinyule.com .ORG /スキーマ/豆"
のxmlns:XSI = "のhttp:// WWW .yuchengyulegw.com 2001 / XMLスキーマ・インスタンス」
のxsi:のschemaLocation = "http://www.springframework.org/schema/beans http://www.hnawesm.com ORG /スキーマ/豆/スプリングbeans.xsd">
<beanクラス= "EmailNotifier"> </ビーン>
<ビーンID =」
<コンストラクタ-Argの値= "テスト"> </のArg-コンストラクタ>
<コンストラクタ-Argの値= "[email protected]"> </のArg-コンストラクタ>
<コンストラクタ-Argの値= "これはテストです"> WWW .seocelve.com </コンストラクタ-Argで>
</ビーン>
</豆>
上記のコードから分かるように、イベントリスナーは、我々のプログラムのイベントをリッスンするためにトリガーを表示するだけでなく、イベントビルトインスプリングコンテナを監視するだけでなく。実際の開発が必要な場合は、私たちは春のコンテナの初期化やカスタムメソッドの破壊にプルバックすることができ、上記のイベントリスナーメカニズムによって達成することができます。
:次のように春いくつかの組み込みオブジェクトが提供され
ContextRefreshedEvent、ContextStartedEvent、ContextClosedEvent、ContextStoppedEvent、RequestHandledEventを。
5ので、スプリング豆容器を得る
ビーンを取得するために、ばね容器getBean()メソッドを呼び出し、次に、ApplicationContextのスプリングによってコンテナを作成するために、上記のすべて。この場合、プログラムは常に、スプリングを保持する容器を参照してください。依存性注入機能を使用して、リスナークラスは、春のコンテナ、直接豆と呼ばれるフロントエンドMVCフレームワークを作成するために私たちを助けるためになるように、web.xmlファイルでリスナーを設定します。しかし、Webアプリケーションでは、我々は、宣言春のコンテナを作成する方法を使用することができます春のコンテナ自体を訪問せず。
いくつかの特別なケースでは、Beanが特定の機能を実現する必要があります(例:豆の出力は、国際的な情報を必要な、または春のコンテナにイベントをパブリッシュ)、これらの関数は、完了するために、春のコンテナの助けを必要としています。我々は、他のBeanに注入するBeanとして容器を春する必要があるが、スプリングビーンコンテナは、コンテナレベルのBeanであること。
Bean実装beanFactoryAwareインタフェースを可能に、容器内のそれにBean参照を得るために。インタフェースは、メソッドパラメータたBeanFactory setBeanFactory(たBeanFactoryたBeanFactory)メソッドを有する、方法は、ばね容器、ばねが容器内に注入するものです。Beanは、インタフェースたBeanFactoryを実装している場合ので、春には、私たちは豆のセッターメソッドは通常、依存性を注入するために、構成ファイルのSpring Beanコンテナ内の構成要素によって駆動される定義が、ここではそれをしませんでしたあなたがBeanを作成するときに、コンテナは自動的に、スプリング自体を注入します。ばねによって容器内に注入される同様のセッターメソッドを提供するbeanFactoryAware BeanNameAware、ResourceLoaderAwareインターフェースと同様のインターフェースが存在します。
のは、例を示しましょう、sayHiは出力人を必要とし、国際メッセージは、春のコンテナを取得します。この例のPersonクラス()メソッドでは、春のコンテナは、国際化によって行われます。
<?xmlのバージョン= "1.0"エンコード= "UTF-8"?>
<ビーンズのxmlns = "http://www.springframework.org/schema/beans"
のxmlns:XSI =「HTTP://www.w3。
XSI:のschemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<ビーンID = "messagSource"クラス= "ORG .springframework.context.support.ResourceBundleMessageSource ">
<プロパティ名="ベース名">
<リスト>
<値>メッセージ/メッセージ</ value>の
</リスト>
</ property>の
</豆>
<豆ID ="人」クラス= "com.container.Person">
</豆>
</豆>
パッケージcom.container。
輸入org.springframework.beans.BeansException。
輸入org.springframework.context.ApplicationContext;
org.springframework.contextインポートします。
輸入org.springframework.context.support.ClassPathXmlApplicationContext;
インポートたjava.util.Locale;
パブリッククラスPersonはApplicationContextAware {実装
プライベートのApplicationContextのApplicationContextを。
@Override
公共ボイドsetApplicationContext(ApplicationContextのApplicationContextの)はBeansExceptionをスロー{
this.applicationContext =のApplicationContext。
}
公共ボイドのsayHello(文字列名){
ロケールロケール= Locale.getDefault(Locale.Category.FORMAT)。
ストリングがmyName = applicationContext.getMessage( "名前"、新たな文字列[] {名前}、Locale.US)。
System.out.println(がmyName)。
}
パブリック静的無効メイン(文字列[] args){
System.out.println(Person.class.getClassLoader()のgetResource()ある、getPath().. "");
のApplicationContextのApplicationContext ClassPathXmlApplicationContext新しい新=( "beans_7_4_5.xml");
applicationContext.getBean P =の人物( "人物"、 Person.class);
p.sayHello( "スパース・リバー");
}
}
message_zh_CN.propertiesの国際化リソースファイル
名= CH \ u4F60 \ u597D、{0}
message_en_US.propertiesの国際化リソースファイル
春の戦闘(序文:Springコンテナ)
おすすめ
転載: www.cnblogs.com/qwangxiao/p/11325322.html
おすすめ
ランキング