我正在学习 spring 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() 正在运行
圈子名称