[Seasar-user:8930] Re: [S2]Dxoを抽象クラスとして定義する方法
中村 渉
[E-MAIL ADDRESS DELETED]
2007年 7月 4日 (水) 10:04:30 JST
小林さん
ご回答ありがとうございます。
customizer.diconに定義して利用できるようになりました。
ただ、教えていただいた記述ですとkijimunaに怒られるので
<arg>で囲みましたが、問題ないですよね?
<component name="dxoCustomizer"
class="org.seasar.framework.container.customizer.CustomizerChain">
<initMethod name="addCustomizer">
<arg>
<component
class="org.seasar.framework.container.customizer.AspectCustomizer">
<property name="interceptorName">"dxo.interceptor"</property>
<property name="pointcut">"convert"</property>
</component>
<arg>
</initMethod>
</component>
Koichi Kobayashi wrote:
> 小林 (koichik) です.
>
> Date: Tue, 03 Jul 2007 21:21:21 +0900
> From: 中村 渉 <[E-MAIL ADDRESS DELETED]>
> To: [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:8917] [S2]Dxoを抽象クラスとして定義する方法
>
>> ドキュメントには抽象クラスも可能とあったので
>> 試してみたのですがAbstractMethodErrorが発生します。
>>
>> public abstract class UserDxo {
>> public abstract Map convert(UserDto user);
>> }
>
> S2 の AOP は,デフォルトではインタフェースに
> 定義されているメソッドにのみインターセプタが
> 適用されます.
> 上記クラスのようにインタフェースがない場合は
> ポイントカットを明示的に指定する必要があります.
> UserDxo を dicon に直接定義しているなら
>
> <component class="UserDxo">
> <aspect pointcut="convert">dxoInterceptor</aspect>
> </component>
>
> SMART deploy なら customizer.dicon で
>
> <component name="dxoCustomizer" class="org.seasar.framework.container.customizer.CustomizerChain">
> <initMethod name="addCustomizer">
> <component class="org.seasar.framework.container.customizer.AspectCustomizer">
> <property name="interceptorName">"dxo.interceptor"</property>
> <property name="pointcut">"convert"</property>
> </component>
> </initMethod>
> </component>
>
> としてください.
>
> あるいは,
>
> public interface UserDxo {
> Map convert(UserDto user);
> }
>
> public abstract class UserDxoImpl implements UserDxo {
> }
>
> のように,インタフェースと実装 (抽象) クラスに
> 分けてください.
> SMART deploy の場合,実装クラスのパッケージは
> <root>.dxo.impl または,<root>.web.<subapp>.impl に
> してください.
>
>
--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
ノハ// プロスパーク株式会社 中村 渉
// ノハ [E-MAIL ADDRESS DELETED]
// 竹橋オフィス
ハ// 〒101-0054 東京都千代田区神田錦町2-7 南部ビル6F
// TEL:03-6804-8680 FAX:03-6804-8681
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Seasar-user メーリングリストの案内