假设我有一个工厂CarFactory
返回汽车对象
class CarFactory {
@Autowired
ApplicationContext context;
public Car get(String type) {
if(type.equals("Merc")
return context.getBean(Merc.class);
if(type.equals("Mclaren")
return context.getBean(Mclaren.class);
}
}
有什么办法可以消除该
context.getBean
吗?有人建议在工厂注入Merc和Mclaren并将它们退还。但这意味着总是返回同一对象。每当工厂要求时,我都需要创建新的Car对象 最佳答案
在您的SpringApplication(或您的配置类的名称)中配置以下bean:
@Bean
@Scope("prototype")
public McLaren mcLarenProtyoe() {
return new McLaren();
}
也适用于Merc。
之后,您可以通过
@Autowired
注入bean。而且由于@Scope("prototype")
的缘故,Spring在每次请求新bean时都会创建一个。