IoCはほとんどのアプリケーションが成長を始め、モジュール化/ルーズカップリングを設計していないと、意味のない境界がなくても大きな相互接続クラスになります。
Springやその他のIoC/DIフレームワークでは、最初からモジュール化について考えることができます。これは大きなコードですが、モジュール化された/疎結合のコードを使用すると、単体テストを行う場合にはユニット化テストがより多く行われます。
私はDAOを書きたい場合は、私はフロントまでそのインタフェースを定義することができます
interface IPersonDao {
List<Person> getPersonsByTeam(String teamName);
}
、その後、私はちょうどどこでも春は「適用されているのsrcでから、このインタフェースの実装のために呼び出すことができます"私はサービス層でそれを必要とします
class MyService {
@Autowired
IPersonDao svc;
}
やテストクラスで:
class TestPersonDao {
@Autowired
IPersonDao svc;
@Test
void testGetPersons(){
List<Person> persons = svc.getPersonsByTeam("billing");
Assert.assertDataSet(persons, "billing.xml");
}
}
また、私のDAO実装は、ダオ契約をいじりせずにデータアクセスの複雑さを隠すことができます。私はHibernateセッションやパーシスタンス・マネージャーを必要とする場合、私はちょうどそれを宣言します。クラスの
class JpaPersonDao implements IPersonDao {
@PersistenceContext
EntityManager em;
List<Person> getPersonsByTeam(String tm) {
em.createQuery("...");
}
}
コンポーネント化は、共同で豆を配線するために、レジストリが必要です。これは手で開発することができますが、これを行うDIフレームワークは既に存在します。さらに、Springは、例外翻訳、アスペクト・プログラミング、MVCフレームワーク、ポートレット・フレームワーク、hibernate、jpaおよび/または他のdbスタックとの統合のような他のものもたくさんあります。もちろん、Spring IoCのものとうまく統合できます。
また、Ruby on Railsの背景からSpringを学習しています。私はSpringが解決する問題に感心しています。 そして、Microsoftの世界は何ですか?彼らはそのような枠組みも持っていますか? NHibernateはありますが、公式のNSpringやそのような計画はありますか? –
Spring.NETと呼ばれています。多くの.NET IoCフレームワークが利用可能です。 – kgiannakakis