假设我有一个返回汽车对象的工厂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对象
答案 0 :(得分:4)
在SpringApplication中配置(或者命名您的配置类)以下bean:
@Bean
@Scope("prototype")
public McLaren mcLarenProtyoe() {
return new McLaren();
}
对于Merc。
之后你可以通过@Autowired
注入bean。并且由于@Scope("prototype")
Spring每次创建新bean时都会创建它。