好奇的春天AOP例外

时间:2011-09-28 16:01:52

标签: java xml spring aop aspectj

我正在努力让我的第一个基于Spring AOP的MethodInterceptors工作,并且我的超简单 XML配置得到了一些奇怪的例外。

我有一个名为Food的类,它有一个名为eat(ConsumptionRate rate)的方法,它将ConsumptionRate类型的对象作为其唯一参数;每次调用特定方法(Food::eat(ConsumptionRate))时,我都希望MethodInterceptor执行“围绕它”:

public class FoodInterceptor implements MethodInterceptor
{
    public Object invoke(MethodInvocation method)
    {
        try 
        {
            // Do some stuff before target method executes

            Object result = method.proceed();
            return result;
        }
        finally
        {
            // Do some stuff after target method executes.
        }
    }
}

以下是我的xml配置(aop-config.xml):

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:aop="http://www.springframework.org/schema/aop"
   xsi:schemaLocation="
   http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

<bean name="foodInterceptor" class="com.me.foodproject.core.FoodInterceptor"/>

<aop:config>
    <aop:advisor advice-ref="foodInterceptor"
        pointcut="execution(public * Food.eat(..))"/>
</aop:config>

项目构建正常(编译等),但是当我运行它时,我收到以下错误:

java.lang.IllegalArgumentException: warning no match for this type name: Food [Xlint:invalidAbsoluteTypeName]

我唯一的猜测是在切入点属性中指定的模式有点错误(也许我需要以某种方式包含ConsumptionRate)。但是这个XML Schema的文档几乎不可能找到,而且我在黑暗中磕磕绊绊。

任何人都有任何建议或看到突然出现的事情?提前谢谢!

撇开,如果有人知道某个网站或任何记录所有这些<aop>标签及其属性的文献,请告诉我们。我已经向我推荐了Spring AOP参考的第6章,虽然这是一个非常全面的教程,但它只是完整的示例,并没有记录整个xml架构。

1 个答案:

答案 0 :(得分:3)

确保您使用的是完全限定的类名(或匹配的通配符版本),否则类扫描程序将无法找到它。