ServiceFactoryBeanで作成された(ServiceLoaderがロードされた)Beanにaspectを適用する際に問題があります。ServiceFactoryBeanで作成したBeanにSpringのアスペクトが適用されていません
私の春のコンテキストは次のようなものになります。
...
<aop:aspectj-autoproxy/>
<bean id="myBean"
class="org.springframework.beans.factory.serviceloader.ServiceFactoryBean"
p:serviceType="com.test.MyInterface"/>
<bean id="myAnotherBean"
class="com.test.MyAnotherBean"/>
を次のように私の側面が定義されている。いくつかの未知の理由
@Aspect
public class MyAspect {
@Pointcut("bean(myBean)")
public void foo() {
}
@Pointcut("bean(myAnotherBean)")
public void bar() {
}
@Around("foo()")
public Object doFoo(final ProceedingJoinPoint jp) throws Throwable {
return timed(jp, "foo");
}
@Around("bar()")
public Object doBar(final ProceedingJoinPoint jp) throws Throwable {
return timed(jp, "bar");
}
private ThreadLocal<StopWatch> stopWatch = new ThreadLocal<StopWatch>();
private Object timed(final ProceedingJoinPoint jp, final String taskName) throws Throwable {
stopWatch.get().add(taskName);
try {
return jp.proceed();
} finally {
if (stopWatch.get() != null) {
stopWatch.get().stop(taskName);
}
}
}
}
を、側面にのみmyAnotherBeanの呼び出しではなくにMyBeanとする者に適用されますコール。 アイデア
myBeanへの呼び出しに自己呼び出しが推奨されていませんか? – smp7d