从Spring 文档中:
你不需要将<aop:scoped-proxy/>
结合用于范围为单例或原型的bean。如果尝试为单例bean创建作用域代理,则会引发BeanCreationException。
对于3.2版文档,文档似乎有所更改,你可以在其中找到以下句子:
你不需要将<aop:scoped-proxy/>
结合用于范围为单例或原型的bean。
似乎不希望你使用代理原型Bean,因为每次请求beanfactory
它都会创建一个新实例。
为了为原型bean提供一种工厂,可以使用ObjectFactory
以下方法:
@Component
public class SingletonBean {
@Autowired
private ObjectFactory<PrototypeBean> prototypeFactory;
public void doSomething() {
PrototypeBean prototypeBean = prototypeFactory.getObject();
prototypeBean.setX(1);
prototypeBean.display();
}
}
并且原型bean将声明如下:
@Component
@Scope(value="prototype")
public class PrototypeBean {
// ...
}