管理対象オブジェクトが作成されるように、それは、コンテナの破壊に依存して、理解することができます
デモ、同じエンティティに対して、クラスDAOの異なるデータベースが複数ある場合
DAO --------->サービス------>コントローラ。
DAO:特にデータベースと対話します。
MySqlDao。MySQLデータベースとの対話
OraclaDao。Oracleデータベース。
サービス:
// MysqlDao mdao =新しいMysqlDao(); //ハードコードされました。悪いスケーラビリティ。
OracleDao odao =新しいOracleDao(); //どのように解決します。
インタフェース宣言、直接不適切なオブジェクトを作成する権利を介して左
制御技術の反転(IOC):春のフレームワークは、この問題を解決することができます
のみ、このクラスで宣言されたプライベートオブジェクトを作成し、そのオブジェクトは、それはそれに渡されたオブジェクトを依存している規制システム内のすべてのオブジェクトのために外部のエンティティによって作成されたとき。それは対象依存に注入され、言うことができます。
ステップスプリングを作成します
1. JARパッケージを追加します。
2.構成ファイルapplicationContext.xmlを、同じプロファイルspringmvcで頭タグを作成します。
<! - 。管理:作成クラスと注射属性 Beanは:管理クラスラベルを示す クラスを:具象クラス ID:タグラベル にプロパティを 属性がある場合:スティングとプリミティブ型または包装、値によって 属性がある場合:行の他のペアをREFによって - > < 豆ID = "MySQLの" クラス= "com.zhiyou100.cyf.dao.MysqlUserDao" /> < 豆ID = "オラクル" クラス= "com.zhiyou100.cyf.dao.OracleUserDao" /> < 豆ID = "S" クラス= "com.zhiyou100.cyf.service.Service" > < プロパティ名= "mdao"プロパティ> </ 豆>
ここmdaoは、DAOオブジェクトの民間のサービスは、オブジェクトのプロパティの参照を置き換えるためにREFを変更することです
// 。ばね荷重は、プロファイル のApplicationContextのApp =を新しい新 ClassPathXmlApplicationContext( "/ applicationContext.xmlを" ); // 。指定されたクラスオブジェクトを取得 サービスS =(サービス)app.getBean( 「S」)を; // これは、オブジェクトMysqlUserDaoを作成することと等価です