2011-06-22 4 views
2

AspectJを使用してSpringとLoad-Time-Weavingを使っていくつかの奇妙な問題が発生しています。 私のApsectの1つでは、org.springframework.flex.security3.SpringSecurityLoginCommandクラスの "doAuthentication"メソッドの呼び出しに反応したいと思っていました。aspectj-weaverとspring-weaverの間のロード時差異

@Around("execution(* org.springframework.flex.security3.SpringSecurityLoginCommand.doAuthentication(..))") 
public Object aroundDoAuthentication(ProceedingJoinPoint pjp) throws Throwable { 
... 

この態様は、私はAspectJの-ウィーバーエージェントを使用している場合、正しく織り込まれているが、私は春・ウィーバーを使用する場合は無視されます。したがって、私は、メソッドを作成しました。残念ながら、私が正しいアスペクトとスプリングの統合が必要な場合は、スプリングウィーバーを使用する必要があります。私の局面は、織り取得するために私が見つけた唯一の方法は、対象クラスのすべてのメソッドの周りにそれを織るするとプログラム的側面は、呼び出しをフィルタリングすることである:上記のコードを使用して

@Around("execution(* org.springframework.flex.security3.SpringSecurityLoginCommand.*(..))") 
public Object aroundDoAuthentication(ProceedingJoinPoint pjp) throws Throwable { 
    final String methodName = pjp.getSignature().getName(); 
    if("doAuthentication".equals(methodName)) { 
    ... 

、私は正しくeverythgin織ることに成功したが、私はこれが私にとって大きなハックと思われるので、これに満足していません。

誰でもスプリングウィーバーを使用する理由を説明できますか?私はaspectj-weaverと同じように織り成すことができませんか?

クリス

答えて

0

私はコードを知らないが、この継ぎ目は同じ古い質問であること。

スプリングAOPはデフォルトのプロキシベースです。

これは、Beanの外部から来たメソッドの呼び出しだけがプロキシを経由することを意味します。したがって、この呼び出しだけがAOPのアドバイスを起動できます。

+0

私は春のsonfigで次のコードを持っています。これにより、春にプロキシを動的に作成する必要がありました: < autoproxy proxy-target-class = "true" /> –