[Seasar-user:6280] Re: AspectAutoRegister を cooldeploy で記述するには
原田
[E-MAIL ADDRESS DELETED]
2007年 2月 22日 (木) 10:55:11 JST
原田です。
定数アノテーションがコンポーネントにも使えたのですね。
失礼しました。
原田 <[E-MAIL ADDRESS DELETED]> wrote:
> 原田です。
>
> 便乗で質問なのですが、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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
Seasar-user メーリングリストの案内