java动态代理 其中一个容易忽略的坑

本文深入探讨Spring框架中两种动态代理机制:JDK动态代理与CGLIB动态代理的区别及使用场景。介绍了当目标对象实现接口时如何利用JDK动态代理,并强调了正确的依赖注入方式;同时,对于未实现接口的目标对象,则采用CGLIB动态代理实现增强。
 注意: 我们知道 spring中封装了两种 动态代理方式 一种是jdk动态代理,一种是cglib动态代理


  但是我们需要注意的是 在我们获取动态代理对象的时候  如果我们的目标对象是实现了接口的

(1 ) 那么在底层是默认通过 jdk动态代理创建的 所以这时候我们在注入的时候一定要

                   通过接口接受注入。否则获取不到。

          @Autowired
  private DaoInterface dao;  

  而不可以 
  @Autowired
          private DaoImpl  dao;


  因为创建的代理对象和目标对象是相当于实现了同一个接口


(2 )  cglib是通过创建子级重写父级对象
  所以我们的代理对象是目标对象的子级。
  所以你可以这么写
  @Autowired

          private DaoImpl dao;

        


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值