spring aop参数传递的问题

业务类

    public void sell(Book book){
        System.out.println("sell");
    }

切面类

 //这里sell参数类型为什么不可以是Book
    @Pointcut("execution(* aop.library.BookShop.sell(Book))"+"&&"+"args(book)")
    public void sell(Book book){}
    @Before("sell(book)")
    public void charge(Book book){
        System.out.println("这本书叫:"+book);
    }

错误:

 Caused by: java.lang.IllegalArgumentException: warning no match for this type name: Book [Xlint:invalidAbsoluteTypeName]
    at org.aspectj.weaver.tools.PointcutParser.parsePointcutExpression(PointcutParser.java:301)

但是把@Pointcut("execution(* aop.library.BookShop.sell(Book))"+"&&"+"args(book)")中的Book改成* 或者..就可以了

可是BookShop.sell(Book)是接受Book的

http://tonylian.iteye.com/blog/1730433