制御の反転:
春Frameworkオブジェクトを使用した後、発信者によって作成されていませんが、春のコンテナによって作成されました
ばね容器は、プログラム制御との関係を担当する直接呼び出し元プログラムによって制御されるのではなくコード
このような制御は、Springコンテナにアプリケーションから転送された制御反転が起こった、これはコントロールの春反転しています
従属オブジェクトを得るためのプロセスは、逆転制御の後、アクティブ運用からの依存オブジェクトを取得するプロセスは、IOC容器から注入なり、逆になります
したがって、「制御の反転は、」また動作中、IOCのコンテナである「DI」(依存性注入)短い(DI)と呼ばれる依存性注入と呼ばれます
オブジェクトに動的依存性注入の一部
したがって、依存性注入(DI)及び逆方向制御(IOC)は、IOCコンテナの導入を意味すること、同じものの異なる角度から説明されています
マナー、依存性注入を使用してオブジェクト間のデカップリング
サンプルコード:
1、および共通データ型の注入セット
[1] の方法とセット構成とのtoStringを提供するユーザエンティティ・クラスを作成します
[2]ライト・コンフィギュレーション・ファイル
<ビーンID = "ユーザ" クラス = "com.bdqn.cn.pojo.User">
<! -通过构造注入- >
<! - <コンストラクタ、引数インデックス= "0"値= "张三" />
<コンストラクタ、引数インデックス= "1">
<リスト>
<値> LIST1 </値>
<値> LIST2 </ value>の
</リスト>
</コンストラクタ、引数>
<コンストラクタ、引数インデックス= "2" >
<マップ>
<エントリキー= "HHH"値= "哈哈哈" />
<エントリキー= "ZZZ"値= "啧啧啧" />
<入力キー=」BBB」値= "不不不" />
</ MAP>
</コンストラクタ、引数>
<コンストラクタ、引数インデックス= "3">
<セット>
<値>张三</値>
<値>李四</値>
<値>王五</ value>の
</セット>
</コンストラクタ、引数>
<コンストラクタ、引数インデックス= "4">
<配列>
<値> AAAAAAAA </値>
<値> BBBBBBBB </ value>の
</配列>
</コンストラクタ、引数> - >
<! -通过セッター方法注入参数- >
<プロパティ名= "ユーザ名"値= "赵云" />
<プロパティ名= "リスト">
<リスト>
<値>看书</値>
<値>学习</ value>の
</リスト>
</ property>の
<プロパティ名= "マップ">
<マップ>
<エントリーキー= "guangshou"値= "广州" />
<エントリーキー= "上海"値= "上海" />
<エントリーキー= "深セン"値= "深圳" />
</ MAP>
</ property>の
<プロパティ名= "セット">
<セット>
<値>关羽</値>
<値>张飞</値>
<値>赵云</値>
<値>马超</値>
<値>黄忠</ value>の
</設定>
</ property>の
<プロパティ名= "アレイ">
<配列>
<値> AAAAAAAA </値>
<値> BBBBBBBB </ value>の
</アレイ>
</プロパティ>
</豆>
[3]書き込みテストクラス
2、目標噴射
[1]インタフェースと実装クラスを作成
[2]ビジネスレイヤを作成します
パブリック クラス UserServiceImpl 実装UserServiceの{
// ここだけで宣言されていない具体
プライベートUserDao userDao;
// セットモードパラメータにはuserDaoが渡さ
/ * ます。public void setUserDAO(UserDao userDaoを){
this.userDao = userDao;
} * /
// コンストラクタ形で
公共{UserServiceImpl(userDao userDao)
スーパー();
この .userDao = userDao;
}
@Override
公共 ボイド言う(){
この.userDao.say();
System.out.printlnは("UserServiceImpl...");
}
}
【3】编写配置文件
【4】编写测试类