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); } }