[Seasar-user:6272] Re: AspectAutoRegister を cooldeploy で記述するには

原田 [E-MAIL ADDRESS DELETED]
2007年 2月 21日 (水) 22:18:34 JST


原田です。

便乗で質問なのですが、Java1.4.xでこれ相当のことはできるのですか?

私の場合は特定パッケージ以下に対してAspectAutoRegisterしたいのですが・・・。

よろしくお願いします。


Koichi Kobayashi <[E-MAIL ADDRESS DELETED]> wrote:

> 小林 (koichik) です.
> 
> Date:    Wed, 14 Feb 2007 16:26:27 +0900
> From:    "o.h." <[E-MAIL ADDRESS DELETED]>
> To:      [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:6166] AspectAutoRegister を cooldeploy で記述するには
> 
> > で、従来 AnnotationAspectAutoRegister や InterfaceAspectAutoRegister
> > を使って自動登録していた部分を記述する方法がわかりません.
> > 
> > やりたいことは、Action に特定のインターフェースまたはアノテーション
> > が付いている場合に限り Aspect を適用ということなのですが.
> 
> 現状だと,従来のままのやり方はありません.
> SMART deploy としては,コンポーネントのクラスに
> アノテーションで指定することになります.
> 
> @Aspect("xxxInterceptor")
> public class HogeServiceImpl implements HogeService {
>   ...
> }
> 
> 独自のアノテーションを作成することもできます.
> 
> @Retention(RetentionPolicy.RUNTIME)
> @Target( { ElementType.TYPE, ElementType.METHOD })
> @Interceptor
> public @interface Xxx {
>   String pointcut() default "";
> }
> 
> というアノテーションを作成して
> 
> @Xxx
> public class HogeServiceImpl implements HogeService {
>   ...
> }
> 
> この場合,クラス名をデキャピタライズした後ろに Interceptor を
> 付けたもの (xxxInterceptor) がインターセプタのコンポーネント名に
> なります.これを変更するには @Interceptor でインターセプタの
> コンポーネント名を指定します.
> 
> @Retention(RetentionPolicy.RUNTIME)
> @Target( { ElementType.TYPE, ElementType.METHOD })
> @Interceptor("hogeInterceptor")
> public @interface Xxx {
>   String pointcut() default "";
> }
> 
> とします.
> 
> あるいは EJB3 のアノテーションを使って
> 
> @Stateless
> @Interceptors(XxxInterceptor.class)
> public class HogeServiceImpl implements HogeService {
>   ...
> }
> 
> この場合のインターセプタは Seasar2 (AOP アライアンス)
> のものではなく,EJB3 のものになります.
> 
> いずれの場合も,アノテーションをインタフェースに付けても
> 効果がありません.実装クラスに付ける必要があります.
> 
> また,最初の @Aspect アノテーションはスーパークラスに
> 付けても効果がなく,末端のクラスに付ける必要があります.
> 
> 独自アノテーションの場合は,独自のアノテーションに
> @Inherited を付けることで,スーパークラスに付けた
> アノテーションが有効になります.
> 
> どのアノテーションも,クラスだけでなくメソッドに
> 指定することもできます.
> 
> 
> -- 
> <component name="koichik">
>     <property name="fullName">"Koichi Kobayashi"</property>
>     <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
>     <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
> </component>
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user




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