Springのデザインパターン
- Singletonパターン: BeansはデフォルトでSingletonにスコープされます。
- ファクトリーパターン:BeanFactoryによる豆の生成
- Proxyパターン: Spring AOPはJavaの動的プロキシを使用し、クラスメソッドの異なる実装を呼び出すために使用されるInvocationHandlerを含むProxyクラスを生成し、カットオーバーコードを追加します。
- テンプレートメソッドパターン:共通のメソッドを実装するために抽象クラスを使用し、メソッドの実装が異なる場合は抽象メソッドを使用します。
- Observerパターン: Spring Listener、オブジェクトはリスナー、通知のためのマップを格納します。
- デコレーター・パターン:同じインターフェースの複数のファセットを実装し、ネスト可能か?
Spring IOC
IOC(コントロールの逆転)
- Control: プログラマからSpringコンテナへのオブジェクトの制御。
長所。
- プログラムコードの簡素化
- コードが分離され、依存関係がなくなり、各部分のタスクを実装するだけになります。
実施原則。
Javaのリフレクション機構+ファクトリーパターン
ビーンファクトリー
Spring IOCで最も重要なクラスは、以下のメソッドを含む基本インターフェースクラスです。
- 4 オーバーロードされた getBean(...)メソッド
- isSingleton, isPrototype
- containsBean(name)
- getType(name)
- getAliases(name)
- isTypeMatch(name, Class )
BeanFactoryはAOPとWebアプリケーションをサポートしていません。
アプリケーションコンテキスト
ApplicationContextは、2つのBeanFactory派生インタフェースを継承することに加えて、BeanFactory派生クラスのインタフェースですが、また、リソースへのアクセス、イベント発行、国際化、および他のインタフェースについては、より多くの機能、ユーザー指向を継承します。
Bean作成時間
Bean作成時間 | ロードの遅延、最初のgetBeanインスタンス化 | singleleton ¬ lazy-init: アプリケーションコンテキストが作成されたときにインスタンス化されます。 |
Singleton & lazy-init: Beanを最初に取得したときにインスタンス化します。 | ||
prototype: ビーンを最初に取得するときにインスタンス化されます。 | ||
拡張機能 | 手動登録が必要 | 自動登録 |
ビーンの初期化と破棄の順序
初期化。
Constructor→BeanPostProcessorのbeforeメソッド→@PostConstructアノテーションのメソッド→InitializingBeanのafterPropertiesSetメソッド→initメソッド→。BeanPostProcessorのafterメソッド
破壊。
PreDestroyアノテーションのメソッド -> DisposableBeanのdestroyメソッド
XMLコンフィギュレーション