Spring 3.1 と APO(proxy) を使用しています。
提供された注釈は Pointcat として使用されます。この場合、Spring AOP プロキシ メソッド「getMergeMappingsAndCals」に CalendarMappingAnnotation のアノテーションが付けられました
私のアドバイスはAfterReturningです
側面:
@Component
@Aspect
public class MappingFilterAspect{
/**
*
* @param retVal
*/
@AfterReturning(
pointcut="@annotation(...annotation.CalendarMappingAnnotation)",
returning="retVal"
)
public void calendarMappingFilter(Object retVal) {
}
}
注釈:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface CalendarMappingAnnotation {
}
使用法:
@Component
public class ApoiMappingManagerImpl implements ApoiMappingManager, ApplicationContextAware, Serializable {
...
@CalendarMappingAnnotation
public MergedMapAndCalsBeanCollection getMergeMappingsAndCals(){
...
}
}
構成:
<context:component-scan base-package="...aus.aspect" />
<aop:aspectj-autoproxy/>
スタックトレース:
java.lang.ClassCastException: $Proxy43 cannot be cast to ...mapping.cals.ApoiMappingManagerImpl
[JVM ...] at ...helpers.SaveFillRestCalsClientHelper.init(SaveFillRestCalsClientHelper.java:62)
[JVM ...] at ...DispatcherImpl.loadPlugin(DispatcherImpl.java:426)
[JVM ...] at ...dispatcher.DispatcherImpl.run(DispatcherImpl.java:181)
[JVM ...] at ...DispatcherImpl.complete(DispatcherImpl.java:319)
[JVM ...] at ...DispatcherImpl.process(DispatcherImpl.java:259)
[JVM ...] at ...RunnerImpl.run(RunnerImpl.java:88)
[JVM ...] at ...JvmLauncherSlave.main(JvmLauncherSlave.java:40)