S2 is Cool!

S2はType3もサポートしていました。
XML定義にはコンストラクタに何を渡すか教える必要はなく、
実装クラスを羅列しておけば、自動的にコンストラクタに合うクラスを
探して結びつけてくれるようです。
サービス系のコンポーネントは、実装が複数あることはまれなので、
これで十分だと思います。
もちろん、Type2や初期化メソッド呼び出しなど細かい指定「も」できるところも素敵です。


  
  

クライアント側のコードも超簡単です。

private static final String PATH =
  "examples/book/BookService-config.xml";
  
public static void main(String[] args) {
  S2Container container = S2ContainerFactory.create(PATH);
  BookService bookService = (BookService) container.getComponent(BookService.class);

  List books = bookService.findBookByCategoryCode("dummy");
  for (Iterator it = books.iterator(); it.hasNext();) {
    String book = (String) it.next();
    System.out.println("book=" + book);
  }
}