春の AOP を学習していますが、@After
注釈の実行に問題があります。
何らかの理由で@After
、メソッド呼び出しの前に実行されます。
私は何を間違っていますか?私のEclipse環境の問題ですか?
@Aspect
public class LoggingAspect {
@After("execution(* aop.*.* (..))")
public void AfterLoggingAdvice() {
System.out.println("AfterLoggingAdvice() is running");
}
}
これは私のメインクラスです:
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(
"aop.xml");
ShapeService service = context.getBean("shapeService",
ShapeService.class);
System.out.println(service.getCircle().getName());
}
XML ファイル:
<aop:aspectj-autoproxy/>
<bean id="circle" class="aop.Circle" >
<property name="name" value="Circle Name" />
<property name="id" value="Circle ID" />
</bean>
<bean id="shapeService" class="aop.ShapeService" autowire="byName"/>
<bean id="loggingAspect" class="aop.LoggingAspect"/>
</beans>
これは、@After
orの使用に関係なく出力@Before
です:
AfterLoggingAdvice() が実行中です
AfterLoggingAdvice() が実行中です
サークル名