你好杰米 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 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题