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

o.h. [E-MAIL ADDRESS DELETED]
2007年 2月 15日 (木) 12:03:11 JST


長谷川です.

小林様、ありがとうございます.
咀嚼しきれていない部分もありますが、実現方法は理解できました.
あとは、いろいろ試しながらやってみます.

以上

Koichi Kobayashi wrote:
> 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 を付けることで,スーパークラスに付けた
> アノテーションが有効になります.
> 
> どのアノテーションも,クラスだけでなくメソッドに
> 指定することもできます.
> 
> 

-- 
_/_/
_/_/ mailto: [E-MAIL ADDRESS DELETED]
_/_/ (deprecated: [E-MAIL ADDRESS DELETED])
_/_/



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