你好杰米 2017-10-25 07:39 采纳率: 87.5%
浏览 1379
已采纳

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>
  • 写回答

1条回答

  • xiaoshanf 2017-10-30 17:13
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)