[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 メーリングリストの案内