IOCは通常、コントロール反転と呼ばれるものであり、これもJavaの焦点であり、インタビュー中によく尋ねられます。
制御の反転(英語の略語のIOC)は、フレームワークの重要な機能であり、オブジェクト指向プログラミングの特別な用語ではないフレームワークにオブジェクトを作成する権利を与えます。依存関係噴射(DI)と依存関係の検索が含まれます。
IOCは、新しいオブジェクトの開始から、サードパーティフレームワークの作成と注入まで、プログラムがオブジェクトを取得する方法を変更します。サードパーティのフレームワークは、一般に、構成を通じてどの実装が注入されるかを指定し、ソースコードの結合を削減します。
IOCの最大の利点は何ですか?
オブジェクト生成はXMLで定義されているため、実装サブクラスに変更する必要がある場合に非常に簡単になります(通常、そのようなオブジェクトは何らかのインターフェイスでは現実的です)、XMLを変更するだけで、オブジェクトのホットプラグを実装することもできます(USBインターフェイスやSCISハードディスクに少し似ています)。
IOCは、実装方法に従って依存関係注入(DI)および依存関係検索に分けることができます。
DIは、セッター注入とコンストラクターの注入に分割された反転を制御するための主な技術的アプローチです
セッターインジェクション
パラメーターレスコンストラクターまたは静的パラメーターレスファクトリーメソッドを呼び出してBeanをインスタンス化した後、Beanのセッターメソッドが呼び出され、セッターインジェクションが実現されます。
パブリッククラスjdbcdatasource(){private string driver; public void setdriver(string driver){class.forname(driver); this.driver = driver;}} ...............次に、セッターインジェクション構成XMLファイルを実装します
<bean id = "dataSource"> <プロパティ名= "driver" value = "oracle.jdbc.oracledriver"/> <プロパティname = "url" value = "jdbc:oracle:@localhost:1521:orcl"/> <プロパティname = "ユーザー"値= "
コンストラクターインジェクション
これは、パラメーターを使用してコンストラクターを呼び出すことによって達成されます。コンテナがインスタンス化されると、対応するコンストラクターはパラメータータイプに従って実行されます。
パブリッククラスOracleUserdaoはuserdaoを実装します{private jdbcdatasource datasource; public oracleuserdao(jdbcdatasource datasource){this.datasource = datasource;}} ..............コンストラクトパラメーターインデックスによるインジェクションを指定します
<bean id = "dataSource"> <proerty name = "driver" value = "oracle.jdbc.oracledriver"/> <プロパティ名= "url" value = "jdbc:oracle:@localhost:1521:orcl"/> <プロパティname = "user" value = " id = "userdao"> <constutor-argindex = "0" ref = "dataSource"/> </bean>
要約します
上記はすべて、SpringのIOCコード分析に関するものです。すべての人に役立つことを願っています。興味のある友達は引き続きこのサイトを参照できます:
SpringのIOCとDIの詳細な説明
SpringのIOCシミュレーション実装の詳細な紹介
欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!