S2でインタータイプ

このままじゃ落ち込みそうなんで、技術ネタでも。

S2 で自作インタータイプをつかうには

  1. InterTypeインタフェースを実装したクラス、またはAastractInterTypeを継承したクラスを用意
  2. introduce (だっけかな?)メソッドを実装
  3. javassist または AastractInterType の便利メソッドを利用してクラスを拡張。フィールドの追加やメソッドの追加が可能。アノテーションを追加する方法がわからん(´・ω・`)
  4. インタータイプを組み込みたいコンポーネント定義に設定を追加。

という流れで手軽にできました。私が実際に行ったのは、プロパティを増やして、それらのsetter/getter を他のクラスから呼び出せるようにインタフェースを追加しました。

あと、実装上の事情により、Seasar 管理下にないクラスにアスペクトを適用しました。AopProxy を使うと手軽にアスペクトを適用できました。
以上、チラシの裏でした。