Spring AOP 实现类添加增强后,引用实现类的其他类无法创建Bean???

最近刚学Spring AOP,遇到一个问题
是这样的,有两个类A,B

 public class A{
    private B b;
    ......
}
 public class B implements C{
    private String name;
    ......
}

我的配置文件里是这样写的

 <bean id="b" class="cn.pojo.B" p:name="Jamie"></bean>
<bean id="a" class="cn.pojo.A" p:b-ref="b"></bean>

单单这个是没问题的

但是一旦为B类加上增强后(我加的是前置增强和后置增强)
增强代码没问题,单独测试的时候有效果,但是只要一加上创建A的bean的代码时,就会报错,显示无法创建A的bean实例,但是为什么我只要把A类里对B的引用的类型换成接口类型就可以了呢?
(就是private C b;)

然后我又测试了一下,干脆不要接口了,直接写,也不报错了,怎么又接口的时候,对于被增强的类的引用,它的类型要写接口类型呢?

 <bean id="aop1" class="com.duan.AOP1"></bean>
    <aop:config> 
        <aop:aspect ref="aop1">
                <aop:pointcut expression="execution(* com.pojo.*.*(..))" id="rpointer"/>
                <aop:before method="before" pointcut-ref="rpointer"/>
                <aop:after method="after" pointcut-ref="rpointer"/>
        </aop:aspect>
    </aop:config>

用接口是一中规范的写法,大都是这样写,的约定俗成