【发布时间】:2011-11-26 03:33:20
【问题描述】:
我第一次尝试使用 Spring AOP 并陷入 XML 配置中。我正在尝试启动并运行基于 AOP 的“日志记录”的模拟版本,使用 MethodInterceptor 包装特定的方法调用并在这些方法调用之前和之后执行一些简单的 System.out.println 语句。简单的东西,对吧?
所以我的项目有很多类,其中两个是Fizz 和Buzz。 Fizz 有一个名为foo() 的方法,Buzz 有一个名为wapap() 的方法。每次在运行时调用这些方法时,我希望我的 LoggingInterceptor 围绕它们执行其 invoke() 方法:
public class LoggingInterceptor implements MethodInterceptor
{
public Object invoke(MethodInvocation methodInvocation)
{
try
{
System.out.println("About to call a special method.");
Object result = methodInvocation.proceed();
return result;
}
finally
{
System.out.println("Finished executing the special method.");
}
}
}
所以我理解了建议(我的拦截器 impl)、切入点(将围绕它们执行建议的方法)和切入点顾问(建议和切入点之间的绑定)的概念。
我只是在努力将它完全绑定到一个简单的 XML 配置中。
这是我目前所拥有的,但我知道它缺少切入点和切入点顾问定义,可能还有更多。
<beans default-autowire="no" >
<bean name="loggingInterceptor" class="org.me.myproject.aop.LoggingInterceptor"/>
</beans>
我在这里缺少什么来使这个特定于 Fizz::foo() 和 Buzz::wapap() 调用?
非常感谢任何朝着正确方向的推动!
【问题讨论】: