我有一个问题,在Spring Web应用程序中,当我们每次调用单例时声明一个bean单例并在bean原型内声明时,原型bean将会是相同的,但是如果我想在控制器,如果其他组件是单例的,那么最后一个组件如何成为原型? 模式是此单例控制器->单例外观->原型服务 感谢你。
答案 0 :(得分:2)
如果我对您的理解正确,那么可以使用许多选项。最受欢迎:
1. 作用域代理。将此注释添加到原型bean:
@Scope(
value = ConfigurableBeanFactory.SCOPE_PROTOTYPE,
proxyMode = ScopedProxyMode.TARGET_CLASS)
2. @Lookup注释,其中包含方法注入:
@Component
public class SingletonFacade {
@Lookup
public PrototypeBean getPrototypeService() {
return null;
}
}
3. ObjectFactory接口:
@Componenet
public class SingletonFacade {
@Autowired
private ObjectFactory<PrototypeService> prototypeBeanObjectFactory;
public PrototypeBean getPrototypeInstance() {
return prototypeBeanObjectFactory.getObject();
}
}
您可以在此处找到更多信息-https://www.baeldung.com/spring-inject-prototype-bean-into-singleton