[Seasar-user:16552] Re: 任意のクラスのコンストラクタへのロジックのWeaving方法

Takuya MACHIDA [E-MAIL ADDRESS DELETED]
2008年 12月 25日 (木) 14:33:59 JST


ひがさん

町田です。

ご回答ありがとうございます。

コンストラクタにアスペクトをWeaving出来ない件、
了解致しました。

ひがさんの仰る案(親クラスを作りinitialize()を定義)も考えたのですが、
各ページクラスのinitialize()メソッドの戻り値の型を何かひとつに
制限してしまうため(void, String, Classのいずれか)、出来れば
避けたいと考え今回の質問をさせていただきました。

戻りの型をStringかClassにしておけば対応出来ないパターンはないと
思いますがTeedaの規約を制限してしまうのが嫌でしたので...。

別途、AOP以外の方法で実現手段を模索してみます。

ありがとうございました。

--
MACHIDA Takuya

2008/12/25 14:17 Yasuo Higa <[E-MAIL ADDRESS DELETED]>:
> ひがです。
>
>> はじめまして。町田と申します。
>>
>> この度、Webアプリケーションを作成するにあたり、初めて
>> Teedaを使用させていただいております。
>>
>> 質問させていただきたい内容としてはTeedaとは関係ないと思うのですが、
>> 任意のクラスのコンストラクタが実行される前後にロジックを
>> 織り込む方法です。
>> 前提とする構成は
>> ・Teeda : 1.0.13-sp4
>> ・S2container : 2.4.32
>> ・SMART Deployの推奨構成に従う
>> です。
>>
>> 想定する実装としては、ページクラスの生成時に
>> ユーザ承認処理を織り込みたいと思っております。
>>
> Seasar2では、コンストラクタにアスペクトをWeavingすることはできません。
>
>> ある任意のメソッドが呼ばれた時点へのロジックの
>> 織り込み方法については色々調べ、customizer.dicon
>> にてpageCustomizerに対してMethodInterceptorを実装した
>> interceptorを追加したAspectCustomizerを追加することで
>> 対応出来ました。
>> この方法でpointcutに"initialize"を設定し当初実装していた
>> のですが、ページクラスにてinitializeメソッドが実装されていな
>> かった場合、当然織り込んだロジックは呼ばれません。
>>
> ページの親クラスを作り、そこにinitialize()を定義して、
> initializeにpointcutを指定するのが、一番楽だと思います。
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


Seasar-user メーリングリストの案内