インターフェイスかアノテーションか、それとも規約か
フレークワークが特定の状況下でユーザクラスのインスタンスにメッセージを通知したい場合、ユーザクラスに何らかの形で「印」を付けることを強制して、どのメソッドを呼び出すのか決定する必要があります。その「印」として考えられるのは、基本的に次のいずれかです。
1はStrutsのActionなどですが、これはまあ論外ということで。
POJO全盛の現在では、アノテーションを使う3の方法が流行していると思います。EJB3のライフサイクルメソッド用アノテーション(@PostConstructなど)が好例ですね。Urumaにも@InitializeMethodがあります。
アノテーションさえも嫌って、さらにPOJO志向を押し進めたのが4の方法です。Teedaのinitialize()とprerender()がこれですね。
で、僕としては、本来の言語仕様に回帰して2を選びたいです。「フレームワーク固有のインターフェイスを実装させるとフレームワーク依存になってしまう」という抵抗感もあると思いますが、それはアノテーションでも同じことだし、implements句を除去するだけで非依存に戻せるので問題ないかなと。