Spring中单例对象引用原型对象

本文探讨了在Spring中,当单例对象需要引用原型对象时遇到的问题及解决方案。通过实现`ApplicationContextAware`接口手动从IOC容器获取原型对象,或者使用依赖查找(DL)方式,利用CGLIB动态生成子类来实现不同对象的引用。这两种方法各有优缺点,前者增加代码对框架的耦合,后者则避免了手动创建对象。
摘要由CSDN通过智能技术生成

Spring中单例对象引用原型对象

在spring中,基本上所有的业务对象都是托管到了IOC中进行管理。
日常开发中我们会接触到的对象都大多数是单例的。当然,Spring中也提供了@Scope注解让使用者可以对类的作用域进行声明。

但若某时候,若想要使用一个业务对象A引用一个业务对象B,而A是单例对象,但是B是应该是原型的,那么此时直接在原型类B上直接利用@Scope("prototype")设置原型作用域后注入到A中是行不通的。

类A:

@Component
public class RefPrototype {
   

    @Autowired
    private ProDao proDao;


    public void refMethod () {
   
        proDao.daoMethod();
        System.out.println("ref method");
    }
}

类B:

@Repository
@Scope("prototype")
public class ProDao {
   
    public void daoMethod() {
   
        System.out.println(this.hashCode());
    }
}
AnnotationConfigApplicationContext ctx = 
         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值