構築するための環境
プロジェクトを作成します。
JavaのWebプロジェクトやプロジェクトことができます
JARパッケージを追加します。
プロファイルを追加
プロジェクトのSRCの新しいコンフィギュレーション・ファイル、ランダムにファイル名:applicationContext.xmlを
xmlファイルの制約ファイル:DTD DTD制約ファイル、スキームXSD制約制約ファイル
<?XMLバージョン= "1.0"エンコード= "UTF-8" ?> < 豆 のxmlns = "http://www.springframework.org/schema/beans" のxmlns:XSI = "http://www.w3.org/2001 / XMLスキーマ・インスタンス" のxmlns:AOP = "http://www.springframework.org/schema/aop" のxmlns:コンテキスト= "http://www.springframework.org/schema/context" のxmlns:TX =" HTTP: //www.springframework.org/schema/tx」 のxmlns:MVC =のhttp://www.springframework.org/schema/mvc のxmlns:P = "http://www.springframework.org/schema/p" のxmlns: C = "http://www.springframework.org/schema/c" XSI: http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/aopのhttp:// WWW .springframework.org /スキーマ/ AOP /春-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd ます。http:// http://www.springframework.org/schema/tx/spring-tx.xsd www.springframework.org/schema/tx http://www.springframework.org/schema/mvc http://www.springframework.org /schema/mvc/spring-mvc.xsd」> </ 豆>
どのように私たちは、オブジェクトを作成するためのコンテナ(春)を作るには?
私たちは、自分自身のオブジェクトを作成する必要がありますが、いくつかの方法(XML設定、注釈)で私は何のオブジェクトを作成するためのコンテナに通知しません。
XMLオブジェクトを経由してコンテナに通知が作成されました
春のコンフィギュレーション・ファイルでは、豆の容器ラベルには、オブジェクトを作成することを約束しました
オブジェクトコンテナを入手する方法
DI:依存性注入
モード1:設定された噴射
前提:プロパティがあり、プロパティがsetメソッドを持っている必要があります
実施例2:コンストラクタ・インジェクション
提供:対応するコンストラクタパラメータ
モード3:Pの名前空間の注入[P:]頭字語のプロパティ属性
バーゲン:P:xxxのxxxの属性は、本質的に設定され、注射を使用して、方法を設定しておく必要があります
モード3:C [名前空間注入C:略称コンストラクタコンストラクタ]
提供される:この方法は、パラメータに対応する構造を有しており、本質的にコンストラクタインジェクション
使用方法は、pと似ています
複数のプロファイルを扱います
あなたは、カテゴリ管理Beanのコンテナを作るために使用される複数のスプリング設定ファイルを作成することができます
そのようなエンティティBeanのすべてのクラス:春-pojo.xml
すべての袋のDAO豆:春-dao.xml
サービスパッケージBeanのすべてのクラス:春-service.xmlに
解決方法1:複数の設定ファイルは、対等な関係です
解決策2:複数の関係を含む設定ファイル
一般的なプロファイルを定義し、他は<インポート>で他のプロファイルに設定ファイルに含まれます
または含まれるファイル名の均一なルールは、あなたが一致する*を使用することができますが、これはループが含まれているに命名規則がつながるメインの設定ファイルではありません。
豆容器のばね範囲
スコープ:それは、単一のケースであるかどうかをspirng作成されたBeanオブジェクト
シングルトン:オブジェクトが同じに作成されます
春の豆のデフォルトの単一ケース内に作成されています
証明:
二回豆のIDとによって得る、出力を表示します
豆のスコープをカスタマイズする方法
scope属性は、タグ値豆に設定します
値の範囲:
シングルトン:シングルトン
プロトタイプ:プロトタイプ、多くの場合
リクエスト:httpリクエストを起動するには、それは新しいオブジェクトを作成します。
セッション:新しいセッションが作成され、それは新しいオブジェクトを作成する必要があります
Beanが作成され、スプリング
二つの容器でのAPIの春
ApplicationContextの:
たBeanFactory
ApplicationContextのとたBeanFactoryの違い
主な違いは、Beanの時間を作成するために、異なるオブジェクトであります
起動時のApplicationContextのコンテナは、それはあなたがしたいBeanオブジェクトを作成します。[高効率、総メモリ]
たBeanFactory駄々をこねるgetBeanメソッドをすぐに作成する場合、コンテナの起動時にオブジェクトを作成しません。
コンテナのライフサイクルでのSpring Bean
1、] [インスタンスインスタンス化のインスタンスを作成し、引数なしのコンストラクタを呼び出します
2、コールsetメソッド、属性値注射
Beanクラスが実装している場合3、BeanNameAwareインタフェースは、BeanのIDの値を取得するためsetBeanName方法を実行します
BeanクラスはBeanFactoryAwareインタフェースはsetBeanFactory方法を実行する実装する場合4、オブジェクトを得ることができたBeanFactory
プロセッサは、Beanクラスを定義している場合5は、[クラスは、書き込みBeanPostProcessorを実装]と容器(豆タグ)が登録され、この方法は、postProcessBeforeInitializationを実行します
Beanオブジェクトが、この方法で得ることができる、オブジェクトは、オブジェクトが復帰することによって変更することができる、変更することができます
InitializingBean Beanクラスは、インターフェイスを実装する場合図6は、本方法はafterPropertiesSetを行います
ラベルは、Beanのinitメソッドのプロパティを定義されている場合7は、のプロパティ値に対応するメソッドを呼び出します
8、実行処理後postProcessAfterInitialization方法
9、豆のビジネスオブジェクト
10、Beanクラスが実装している場合DisposableBeanインタフェースメソッド呼び出しはDestoryは
11、注:手動で容器のcloseメソッドを呼び出し
12、((ClassPathXmlApplicationContext)CONTEXT1).close();
13、ラベルが定義されている場合豆破壊法属性、メソッド呼び出し属性対応する値
スプリング式開発のIOCノート
JARパッケージを追加します。
ジャースプリングAOP、春AOP技術は、アノテーションを使用しているため、
春のコンフィギュレーション・ファイルの設定、ノートのパッケージパスをスキャンするコンポーネントを定義します
オブジェクト上記のクラスにアノテーションを追加@Component [同等の構成の<bean>タグ]に作成する必要が
@Component
パブリッククラスUserServiceImpl {
}
オブジェクトを起動した後、容器UserServiceImplクラスが作成され、ビーンIDが最初の文字小文字のクラス名、つまりID =「userServiceImpl」に設定されています
あなたは豆のID値をカスタマイズしたい場合は、@Component(「id名を。」)を使用
注入は、依存オブジェクトのプロパティであります
要約:
1、どのようにオブジェクトを作成するためのコンテナを通知します
@Component:一般
@Repository:一般的に上記で使用DAOタイプ
@ サービス:一般的に使用されるサービス上のクラス
@Controller:クラス上記は、一般的にコントローラで使用され
2、どのように血管注入性を作るために
@Autowired:容器自動注入の種類に応じて
@Autowired
豆の正確なターゲットIDに従って@Qualifier(「D1」)注射用コンテナ
@Resource:このコメントは内部で、内部のスプリングではありませんがJavaEEのです
豆ID注射の種類に応じて注入する@Resource(名=「D1」)