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