背景:
参照オブジェクトまたはコードのオブジェクト固有の結合によって実行依存性管理が高くなる場合は、コード検査することが困難となります。IOCは入れ、この問題を解決することができ、それを
これらのフレームワークやIOCコンテナ管理への依存性は、開発を簡素化します。
IOCは、デザインパターンで、春IOCは、その実装の一つです。春IOC JavaBeanは、依存関係を管理するIOCのパターンによって、基本的な容器を提供します。
IOC(制御の反転)2つの実装。
1、DL(依存ルックアップ)は、ユーザが自分のリソースを検索し、侵襲性を持つオブジェクトをアセンブルする必要があり、除去されています
図2に示すように、組立体の形成に関与するDI(依存性注入)
SpringのIOCは、機能をサポート:
1、依存性注入
2、依存性チェック
図3に示すように、自動組立
4、収集をサポート
図5に示すように、指定された初期化方法及び破壊の方法
図6に示すように、いくつかのサポートコールバック・メソッド(春インタフェースが実現する必要がある、わずかな浸潤性)
最も重要なことは、依存性注入され、XMLからREFタグを読んで、refはruntimeBeanReferenceです
IOCコンテナは、2つの特定の形式に分かれています。
1、たBeanFactoryインタフェース:単純なコンテナ。唯一の最も基本的な機能を達成するため、ハッシュマップとして理解することができ、キーはBean名であり、値は、Beanインスタンスであります
2、ApplicationContextのインタフェース:高度なコンテナ。単純なコンテナに基づいて、コンテナ全体のすべての機能に代わって、統合インターフェース、多くの。これは、全体の内容を更新するには、)(リフレッシュを定義します
、リロードは/ Beanのすべてをリフレッシュ
これらの二つに加えて、他の二次インタフェースがあります
高いコンテナが低いのApplicationContextコンテナgetBean()に依存して、ClassPathXmlApplicationContextは、ビルドプロセスはIOCを初期化することです
プロセス:
1、用户构造ClassPathXmlApplicationContext(简称 CPAC)
CPAC首先访问了“抽象高级容器”的refresh(),这个方法是模板方法。所以要回调子类(低级容器)的refreshBeanFactory(),作用是使用
低级容器加载所有BeanDefinition和Properties到容器中。
低级容器加载成功后,高级容器开始处理一些回调,例如Bean后置处理器。回调setBeanFactory法。或者注册监听器等,发布事件,实例化例
Bean等等功能。
简单说就是:
1、低级容器加载配置文件(从 XML,数据库,Applet),并解析成 BeanDefinition 到低级容器中。
2、加载成功后,高级容器启动高级功能,例如接口回调,监听器,自动实例化单例,发布事件等等功能。
加载所有的Bean配置成BeanDefinition到容器中,如果Bean有依赖关系,则使用占位符暂时代替。
然后,在调用getBean的时候,进行真正的依赖注入,即如果碰到了属性是ref的(占位符),那么就从容器里获取这个Bean,然后注入到实例中
—— 这就是依赖注入。
依赖注入方式:
setter、constructor、factory实现
请自行百度或者参考我之前的文章:https://www.cnblogs.com/huigelaile/p/10973913.html
想要深入了解可以查看《Spring技术内幕》一书第二章,或者IOC相关源码