2013-08-01 42 views
0

我需要一個彈簧管理bean在我的控制器方法之一。由於我不需要其他任何方法,因此我認爲不需要自動裝配它。我已經讀過,應該避免使用ApplicationContext.getBean(),但是有沒有其他選擇?一個控制器方法內的Bean

如果使用getBean()是正確的決定,我應該提及創建的bean具有自動裝配屬性,並且似乎在創建時使用getBeans()創建它們時未設置。

代碼

@Controller 
@RequestMapping("/controller*") 
public class Controller { 

    @RequestMapping 
    public String get(Model model){ 
     Task task = ApplicationContextHolder.getBean("Task"); 
     task.getA(); 

     return "index"; 
    } 
} 

public class Task { 
    @Autowired(required=true) 
    private Service service; 

    public List<Object> getA() { 
     List<Object> list = service.findWhatever(); //service is null 
     return list; 
    } 
} 

這是完全有可能的,我不知道所有的概念權利或我失去了一些東西。什麼是創建Task bean的最佳方式?

回答

3

如果Task實例是由Spring管理的,那麼你真的應該注入它。在做

Task task = ApplicationContextHolder.getBean("Task"); 

通過一堆方法調用嘗試獲取bean。只是@Autowired它,你不會有任何頭痛。

注意

@Autowired(required=true) 
private Service service; 

希望在應用程序上下文中的另一個Service豆。

相關問題