簡単な紹介
一般的なJavaプログラムは、クラス、クラスの代入文がたくさんあるので、面倒な、独自のマニュアルを必要とします。Bean
人々は疎結合のようなプログラムを書きたい、それはまた、通常のJavaクラスで、ノルムで、その機能を実現することができ、各クラスには、ビーンは、ビーンの数で作られた組み立てプログラムの一部に似ています。
多くのクラスは、私たちはしばしば繰り返して使用しますが、初期化や割り当てと他の操作は、繰り返しですが、またビジネスのコードでそれを行うための場所を見つけるための方法を見つけること。
春のフレームにより、構成された豆、IOCコンテナが自動的にあなたを助けるnew
アウト、自動的に豆のライフサイクルを管理し、良い値を得ました。宣言は、IOCコンテナが自動的にすべての設定が行われて置くのに役立ちますどこ我々だけでのみ使用する必要があります。
豆
Beanの作成
これは、通常のJava Beanクラス、メンバー変数とそれらの対応するセッターとゲッターメソッド組成物です。
package com.yww;
public class Message {
private String msg;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = "this mssage is : " + msg;
}
}
豆ライフサイクル
实例化 -> 填充属性 -> 调用BeanNameAware的setBean()方法 -> 调用BeanFactoryAware的setBeanFactory()方法 -> 调用ApplicationContextAware的setApplication()方法 ->
调用BeanPostProcessor的预初始化方法 -> 调用InitializingBean的afterPropertiesSet()方法 ->
调用自定义的初始化方法 ->
调用BeanPostProcessor的初始化方法 ->
使用Bean ->
(容器关闭)
调用DisposableBean的destroy()方法 ->
调用自定义的销毁方法
おそらくプロセスは、使用する容器を閉じビーンインスタンス、割り当て、(容器に入ってくる場合)、(カスタムメソッドを呼び出す)(破壊のカスタムメソッドを呼び出す)です。
括弧内の対応するインターフェース後に追加の操作を実現することができる、Bean実装を必要とします。
ビーンのスコープ
豆は、設定ファイルで提供することができるscope
範囲。
可能な値:singleton
(シングルトン)、 prototype
(すべての新しい)、 request
(それぞれの新しい世界)、session
(Protlet用)(セッション共有あたり)、グローバル・セッション。
相続のBean定義
Beanは指定することができるparent
別のBeanを指定することでid
、それが継承するように、バック。
そこjavaファイルには継承はありませんが、継承された効果は、設定ファイルで達成することができる、またはあなたがメンバーの親クラスをサブクラス化することができます。が、しかし、親クラスのメンバーを必要とするサブクラス。
ビーンポストプロセッサ
相続による豆BeanPostProcessor
インターフェースは、私たちはいくつかのカスタムアクションビーンの初期化と破壊を行うことができます。
IoCコンテナ
春のコンテナは、そのライフサイクル全体を管理し、それらを構成し、それらを組み立て、オブジェクトを作成する責任があります。
春は、2つのカテゴリに、複数の容器を実現するために来ます。
- 豆の工場は、(
org.springframework.beans.factory.beanFactory
)最も単純なコンテナで、最も基本的なDIサポートを提供します。 - アプリケーション・コンテキスト(
org.springframework.context.ApplicationContext
たBeanFactory基づく)は、サービスのアプリケーション・フレームワークのレベルを提供し、作成されています。(そのような特性からの情報として、ファイルと目的のアプリケーション・イベントを公開するために、テキストイベントリスナーを解析)
春のコンテナたBeanFactory
たBeanFactoryは見つけるために、他のオブジェクトの助けを必要とする.xml
ファイルを。
// ...
XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("beans.xml"));
Message msg = (Message)factory.getBean("messge1");
// ...
ClassPath
それはsrc/
パス。
春のApplicationContext容器
以下のような春のアプリケーションコンテキストの多くの種類があります:
- AnnotationConfigApplicationContext:ベースの構成クラスから春のJavaアプリケーションコンテキストをロードします。
- AnnotationConfigWebApplicationContext:コンフィギュレーションのJavaクラスから春のWebベースのアプリケーション・コンテキストをロードします。
- ClassPathXmlApplicationContext:XML設定ファイルは、コンテキスト・クラスパスからロードされます。
- FileSystemXmlapplicationContext:ファイルシステム内のXML設定ファイルからロードコンテキスト。
- XmlWebApplicationContext:WebアプリケーションでのXML設定ファイルからロードコンテキスト。
// ...
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
ApplicationContext context = new FileSystemXmlApplicationContext("/home/yww/beans.xml");
ApplicationContext context = new AnnotationConfigApplicationContext(MessageConfig.class);
Message msg = (Message)context.getBean("messge1");
// ...
このアプリケーション・コンテキストのいくつかの例では、代わりにウェブから、アプリケーションで使用します。
AnnotationConfigWebApplicationContext
で設定できるように、真ん中の使用代替。web.xml
<context-param>
ContextLoaderListener
AnnotationConfigWebApplicationContext
XmlWebApplicationContext