2017-05-09 81 views
1

比方說,我有一個工廠CarFactory返回車對象春天 - 辛格爾頓工廠實例原型作用域bean

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注入工廠並返還。但是這意味着總是返回相同的對象。我需要創建每次他們從工廠

回答

4

配置在SpringApplication(或什麼都你的配置類名爲)要求新車對象下面bean:

@Bean 
@Scope("prototype") 
public McLaren mcLarenProtyoe() { 
    return new McLaren(); 
} 

也爲芝加哥商業交易所。

之後,您可以通過@Autowired注入bean。而且由於@Scope("prototype") Spring每次創建一個新的bean,如果它被請求的話。