dot.seasar

2004-09-28

状態を持ったInterceptor 19:08

ひがさんから頂いたコメントより。

Interceptorに動的な状態を持たせたい場合、Interceptorが同時にweavingされる可能性があるかどうか、というところがキモになりそうなんですけど、それが確実に判別できる箇所というのはdiconファイル上でしかないような気がする*1

そういう前提で設計すると、予めInterceptor内でスレッドセーフになるように作っておいた方が安全なのかな。

…という認識で合っていますか?

Interceptorのインスタンスはどう扱うべき? 18:43

MockInterceptorやらDelegateInterceptorはフィールド値を持っているのだけど、これを

<component name="helloMockInterceptor" class="org.seasar.framework.aop.interceptors.MockInterceptor">

<property name="returnValue">"Hello"</property>

</component>

<component class="Hello">

<aspect>helloMockInterceptor</aspect>

</component>

のようにComponentの下でない場所にアスペクト設定した場合、helloMockInterceptorはContainerにインスタンス管理される。この時、

MockInterceptor interceptor =

(MockInterceptor) container.getComponent("helloMockInterceptor");

interceptor.setReturnValue(new String("Bonjour"));

などとすることは良くないことなのか、それともやってもいいことなのか、気になります。

基本的には気持ち悪く感じるのですが、自分の作りたいInterceptorでは動的にフィールドを変えたいのです。Interceptor自体はアスペクトとして動的にweavingされているので、Interceptor自体のインスタンスってどういう捕らえ方をしたらいいのかイマイチつかめない。

教えて!エロイ人。

*1:Interceptorのインスタンスをつかい回しているかどうか等

higayasuohigayasuo2004/09/28 18:47普通のコンポーネントと同じです。たまたま
MethodInterceptorのインターフェースを実装しているだけです。
注意点はスレッドセーフかどうか。

dotdot2004/09/28 18:55早いっ!!回答ありがとうございます。やはりInterceptor自体はスレッドセーフではないのですね。

higayasuohigayasuo2004/09/29 07:16weavingはS2Container.init()で行われるから
同時ということはないけど。
Interceptorといっても特別なことはなにもありません。
単なる普通のコンポーネントで、他のコンポーネントのメソッド
が呼び出されたときに、自動的に呼び出されているだけです。
自動的にの部分を明示的に呼び出したらと考えれば、
いいんじゃないでしょうか。

dotdot2004/10/13 01:44interceptorのweavingはinit()で行われるのですね。interceptorをコンポーネントとして取得して、その操作がaspect適用先にも反映されていたのですっかり勘違いしてしまいました…。
ありがとうございます。っていうか返事遅くてすいません。ガッ。

HughHugh2007/07/02 17:28http://4510580c69a839c44df15d1c5bae4197-t.sxmdzz.org <a href="http://4510580c69a839c44df15d1c5bae4197-h.sxmdzz.org">4510580c69a839c44df15d1c5bae4197</a> [url]http://4510580c69a839c44df15d1c5bae4197-b1.sxmdzz.org[/url] [url=http://4510580c69a839c44df15d1c5bae4197-b2.sxmdzz.org]4510580c69a839c44df15d1c5bae4197[/url] [u]http://4510580c69a839c44df15d1c5bae4197-b3.sxmdzz.org[/u] 3818aed3ad3e1a14ec8c01dee57ce7f0

TuqpcvkTuqpcvk2007/07/29 20:56<a href= http://mlm.laplanezarde.info/credit-card/site_map.html >card citi credit</a> [url=http://mlm.laplanezarde.info/credit-card/site_map.html]card citi credit[/url]

DanthDanth2012/02/18 10:36We could've done with that inghsit early on.

dzemiukdzemiuk2012/02/19 18:59nDwfqr <a href="http://abhusbopsyvb.com/">abhusbopsyvb</a>

zgattjkuozgattjkuo2012/02/20 00:27B9rHoF , [url=http://bqgbaehcpbnj.com/]bqgbaehcpbnj[/url], [link=http://nqdfgcvvkxsy.com/]nqdfgcvvkxsy[/link], http://wcubcyzewlxs.com/

トラックバック - http://seasarproject.g.hatena.ne.jp/dot/20040928