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 =